[개발자 로드맵]/파이썬
[혼자 공부하는 파이썬] 콜백함수, map/filter 함수
Ramrider
2023. 9. 20. 22:09
728x90
반응형
들어가기 앞서
# 함수는 변수에 저장할 수 있다
def call_10_times():
print("호출되었습니다")
a = call_10_times
print(a)
a()
# 함수를 변수에 집어넣을 수 있다.
# 위의 말은 함수 a를 호출 할 수도 있다는 말과 같다.
함수를 매개변수로 전달하기
# 함수는 변수에 저장할 수 있다
# 매개변수로 전달되는 함수를 콜백함수라고 한다.
def call_10_times(콜백함수):
for i in range(10):
콜백함수(i)
# print_hello(i)
def print_hello(매개변수):
print("안녕하세요", 매개변수)
# 매개변수를 함수로 입력해서 전달
call_10_times(print_hello)
콜백함수의 활용 예(1): map
# map()
# 이터레이터는 리스트와 비슷한 것이라고 일단 생각할 것
# 각각의 요소에 함수를 적용해서
# 새로운 이터레이터를 리턴한다.
# 이터레이터 = map(함수, 리스트)
def power(숫자):
return 숫자 **2
A = [1, 2, 3, 4, 5]
이터레이터 = map(power, A)
print(list(이터레이터))
print([
#표현식
숫자 ** 2
#반복문
for 숫자 in range(1, 5+1)
])
콜백함수의 활용 예(1): filter
# filter(함수, 리스트)
# 리스트의 요소를 함수에 전달했을 때
# 결과로 True가 나오는 녀석을 모아서
# 새로운 이터레이터를 만듦
def 홀수인가요(숫자):
if 숫자 %2:
return True
else:
return False
A = [1, 2, 3, 4, 5]
이터레이터 = map(홀수인가요, A)
print(list(이터레이터))
# 리스트 내포로 구현해본다면
print([
#표현식
숫자
#반복문
for 숫자 in range(1, 5+1)
#조건문
if 숫자 %2 == 1
])
# 대부분의 경우 리스트 내포를 활용하지만
# 상황에 따라 map과 fliter함수로 구현하기도 한다.
map(), filter() 함수 구현하기
A = [1, 2, 3, 4, 5]
# map()
def my_map(콜백함수, 리스트):
output = []
for i in 리스트:
output.append(콜백함수(i))
return output
def power(숫자):
return 숫자 ** 2
print(my_map(power, A))
# filter()
def my_filter(콜백함수, 리스트):
output =[]
for 숫자 in 리스트:
output.append(콜백함수(숫자))
return output
def is_odd(숫자) :
return 숫자 %2 == 1
print(my_filter(is_odd, A))
참고자료
- 한빛미디어의 윤인성 저자님의 혼자 공부하는 파이썬 책을 독학하면서 복습하기 위해 정리한 내용입니다.
728x90
반응형