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 학원 강의 및 책 '혼자 공부하는 파이썬' ]

+ Recent posts