1. 내장 함수란?
👾 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수가 내장되어 있으며, 이를 내장 함수 built-in function 이라고 함
👾 외부에 따로 저장해 둔 모듈에서 불러오는 것이 아니기 때문에 import가 필요 없음
2. 문자 내장 함수
chr() | 특정 문자의 유니코드 값을 전달하면 해당 유니코드 값을 가진 문자를 반환하는 함수 ▶️ 유니코드의 유효범위 0 ~ 1,114,111 / 아스키코드의 유효 범위 0 ~ 127 |
ord() | 문자를 전달하면 해당 문자의 유니코드 값을 반환 |
eval() | 실행하고자 하는 표현식(expression) 을 문자열로 전달하면 표현식의 결과값을 반환 |
format() | 전달받은 인수와 포맷 코드에 따라 형식을 갖춘 문자열을 반환 ▶️ 포맷 코드를 전달하지 않으면 str()을 호출한 것과 같음 |
str() | 전달받은 인수를 문자열로 변환하여 반환 |
# chr()
print(chr(48)) # 0
print(chr(49)) # 1
print(chr(65)) # A
print(chr(66)) # B
print(chr(97)) # a
print(chr(98)) # b
# ord()
print(ord('A')) # 65
print(ord('한')) # 54620
# eval()
print(eval('100 + 200')) # 300
a = 10
print(eval('a * 5')) # 50
print(eval('min(1, 2, 3)')) # 1
# format()
print()
print(format(10000)) # 10000 / str(10000)과 같음
print(format(10000, '_')) # 10_000 / 천단위 구분 기호로 밑줄(_)을 사용
print(format(10000, ',')) # 10,000 / 천단위 구분 기호로 쉼표(,)를 사용
3. 숫자 내장 함수
abs() | 전달된 인수 (정수 혹은 실수)의 절대값을 반환 |
divmod() | 전달된 두 인수를 나누어 몫과 나머지를 한 쌍의 결과로 반환. 몫과 나머지는 하나의 튜플(tuple)로 반환 |
float() | 전달된 인수(숫자 또는 문자열)를 실수로 만들어 반환. 전달된 인수가 없는 경우에는 0.0을 반환 |
int () | 전달된 인수(숫자 또는 문자열)를 정수로 만들어 반환. 전달된 인수가 없는 경우에는 0을 반환 |
max() | 전달된 인수 중 가장 큰 값을 반환 |
min() | 전달된 인수 중 가장 작은 값을 반환 |
pow() | 전달된 두 인수의 거듭제곱을 반환. 연산자 중에서 거듭 제곱 연산자 ** 와 같음 |
round() | 전달된 인수를 이용해 반올림한 값을 반환 ▶️ 전달된 인수가 하나이면 정수로 반올림한 값을 반환 ▶️ 전달된 인수가 2개이면 두 번째로 전달한 인수만큼 소수점을 남겨둠 |
sum() | 전달된 리스트나 튜플과 같은 반복가능객체의 합계를 반환 ▶️ 숫자가 아닌 값을 전달하면 에러가 발생 |
# abs()
print(abs(10)) # 10
print(abs(-10)) # 10
# divmod()
print(divmod(10, 3)) # (3, 1)
print(type(divmod(10, 3))) # <class 'tuple'>
# max()
print(max(1,10)) # 10
li = [5, 3, 4, 2, 1]
print(max(li)) # 5
# min()
print(min(1,10)) # 1
li = [5, 3, 4, 2, 1]
print(min(li)) # 1
# pow()
print(pow(10, 2)) # 100
print(pow(10, 3)) # 1000
print(pow(10, -2)) # 0.01
print(pow(10, -3)) # 0.001
# round()
print(round(1.5)) # 2
print(round(1.4)) # 1
print(round(1.55, 1)) # 1.6
print(round(2.675, 2)) # 2.67 -> 부동 소수점 에러로 인해 2.68이 아니라 2.67이 반환
print(round(2.6755, 2)) # 2.68
# sum()
list1 = [1, 2, 3, 4, 5]
print(sum(list1)) # 15
list2 = ['h', 'e', 'l', 'l', 'o']
# print(sum(list2))
3. 시퀀스 내장 함수
enumerate() | 리스트에 저장된 요소와 해당 요소의 인덱스가 튜플 tuple 형태로 함께 추출 |
range() | 전달된 인수값에 따라 시퀀스 자료형의 데이터를 생성 1) range(stop) : 0부터 stop 사이의 모든 정수 2) range(start, stop) : start부터 stop 사이의 모든 정수 3) range(start, stop, step) : start부터 stop 사이의 정수 중에서 step만큼의 차이를 가지고 있는 정수 |
len() | 함수에 전달된 객체의 길이(항목 수)를 반환 |
sorted() | 전달된 반복가능객체의 오름차순 정렬 결과를 반환 reverse=True 옵션을 추가할 경우 내림차순 정렬 결과를 반환 |
zip() | 전달된 여러 개의 반복가능객체의 각 요소를 튜플로 묶어서 반환 전달된 반복가능객체들의 길이가 서로 다르면 길이가 짧은 반복가능객체 기준으로 동작 |
reversed() | 리스트에서 요소의 순서를 뒤집어서 반환 ▶️ 리턴 값 'reverseiterator' : 요소 하나하나 꺼내기 위해 next() 함수 사용해야 함 |
items() | 딕셔너리에서 items() 함수를 사용하면 키와 값을 조합해서 반복문 작성 |
# 1. enumerate()
# for item in enumerate([리스트]) :
# 반복실행문
for item in enumerate(['가위', '바위', '보']):
print(item)
# (0, '가위')
# (1, '바위')
# (2, '보')
for idx, element in enumerate(['가위', '바위', '보']):
print(idx, ' / ', element)
# 0 / 가위
# 1 / 바위
# 2 / 보
# 2. range()
print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1, 11))) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(range(0, 30, 5))) # [0, 5, 10, 15, 20, 25]
print(list(range(0, -10, -1))) # [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
print(list(range(0))) # []
# 3. len()
li = ['a', 'b', 'c', 'd']
print(len(li)) # 4
d = {'a': 'apple', 'b': 'banana'}
print(len(d)) # 2 / 딕셔너리는 '키:값'으로 구성된 한 쌍을 하나의 데이터로 봄
print(len(range(10))) # 10 / range() 함수로 생성되는 값은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
print(len(range(1, 10))) # 9 / range() 함수로 생성되는 값은 1, 2, 3, 4, 5, 6, 7, 8, 9
# range() 함수와 리스트의 길이를 구하는 len() 함수를 함께 사용하면 리스트의 인덱스를 생성 가능
seasons = ['봄', '여름', '가을', '겨울']
seasons_eng = ['spring', 'summer', 'fall', 'winter']
for idx in range(len(seasons)):
print(f'{seasons[idx]} / {seasons_eng[idx]}')
# 4. sorted()
my_list2 = ['b', 'c', 'a', 'd']
print(sorted(my_list2)) # ['a', 'b', 'c', 'd']
print(sorted(my_list2, reverse=True)) # ['d', 'c', 'b', 'a']
print(sorted(my_list)) # [1, 2, 3, 4, 5, 6]
print(my_list) # [6, 3, 1, 2, 5, 4] / 실제로 정렬이 된건 아님
my_list = sorted(my_list) # 오름차순 정렬 결과를 덮어쓰기
print(my_list) # [1, 2, 3, 4, 5, 6]
# 5. zip()
names = ['james', 'emily', 'amanda']
scores = [60, 70, 80]
for student in zip(names, scores):
print(student)
# ('james', 60)
# ('emily', 70)
# ('amanda', 80)
# 튜플은 언패킹이 가능하므로 다음과 같은 모습으로 구성 가능
for name, score in zip(names, scores):
print(f'{name}의 점수는 {score}입니다.')
# james의 점수는 60입니다.
# emily의 점수는 70입니다.
# amanda의 점수는 80입니다.
for idx, name in enumerate(names):
print(f'{name}의 점수는 {scores[idx]}입니다.')
for idx in range(len(names)):
print(f'{names[idx]}의 점수는 {scores[idx]}입니다.')
6. reversed()
list_a = [1, 2, 3, 4, 5]
print(list(reversed(list_a)))
# [5, 4, 3, 2, 1]
# 7. items()
dic_ex = {
'james': 60,
'emily': 70,
'amanda': 80
}
print(dic_ex.items())
# dict_items([('james', 60), ('emily', 70), ('amanda', 80)])
⚡️ 월과 일수 조합해서 반환하는 문제
months_eng = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December']
months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 1. range() 사용
for idx in range(len(months)):
print(f'{months_eng[idx]} = {months[idx]}일')
# 2. enumerate() 사용
for i, v in enumerate(months_eng):
print(f'{v} = {months[i]}일')
print()
# 3. dict 사용
months_dic = dict()
for i, v in enumerate(months_eng):
months_dic.update({v: months[i]})
for k, v in months_dic.items():
print(f'{k} = {v}일')
# 4. zip() 사용
for item1, item2 in zip(months_eng), months:
print(f'{item1} = {item2}일')
4. 리스트 내포 list comprehensions
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것]
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문]
# 예시 1.
array = [i*i for i in range(0, 20, 2)]
print(array)
# [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
# 예시 2.
array = ['사과', '자두', '바나나', '체리']
output = [fruit for fruit in array if fruit != '체리']
print(output)
# ['사과', '자두', '바나나']
💡 이터레이터 iterator ?
for 반복자 in 반복할 수 있는 것
- 반복할 수 있는 것을 프로그래밍 용어로 이터러블 iterable 이라고 함
➡️ 즉, 내부에 있는 요소들을 차례차례 꺼낼 수 있는 객체를 의미
- 리스트, 딕셔너리, 문자열, 튜플 등
- 이 중에서 next() 함수를 적용해 하나하나 꺼낼 수 있는 요소를 이터레이터 iterator 라고 함
numbers = [ 1, 2, 3, 4, 5]
num = reversed(numbers)
print("num : ", num)
print(next(num))
print(next(num))
print(next(num))
print(next(num))
print(next(num))
#5
#4
#3
#2
#1
[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]
'Programming Language > Python' 카테고리의 다른 글
[Python] 재귀함수, 피보나치 수열, 메모화, 리스트 평탄화 (0) | 2024.03.02 |
---|---|
[Python] 함수(function), 인수와 매개변수, 리턴(return) (0) | 2024.03.02 |
[Python] while 반복문, break/continue 키워드 (0) | 2024.03.02 |
[Python] for 반복문과 range() 함수, 역반복문, 중첩 반복문, 피라미드 생성 (0) | 2024.03.02 |
[Python] 딕셔너리 (dictionary), 요소 접근/추가/제거, 내부 키(key) 확인 (0) | 2024.03.01 |