혼공파 61 ~ 63 강
1. 콜백함수 / map(), filter()
# 함수는 변수에 저장할 수 있다
def call():
print("호출되었습니다!!")
a = call
print(a) # <function call_10_times at 0x7f99e1f5fe20>
a() # 호출되었습니다!!
# 매개변수를 함수로 입력해서 전달
# 이렇게 매개 변수로 전달하는 함수가 콜백 함수
def call_10_times(콜백함수):
for i in range(10):
콜백함수(i)
def print_hello(매개변수):
print("안녕하세요!", 매개변수)
call_10_times(print_hello)
# map()
# 리스트 각각의 요소에 함수를 적용해서
# 새로운 이터레이터(리스트 비슷한 것 이후에 다룬다)를 리턴한다.
# 이터레이터 = map(함수, 리스트)
def power(숫자):
return 숫자 ** 2
A = [1, 2, 3, 4, 5]
이터레이터 = map(power, A)
print(list(이터레이터)) # [1, 4, 9, 16, 25]
## 리스트 내포로 똑같이 구현
print([
# 표현식
숫자 ** 2
# 반복문
for 숫자 in range(1, 5 + 1)
# 조건문
])
# filter(함수, 리스트)
# 리스트의 요소를 함수에 전달 했을 때
# 결과로 True가 나오는 녀석을 모아서
# 새로운 이터레이터를 만듦
def 홀수인가요(숫자):
if 숫자 % 2 == 1:
return True
else:
return False
A = [1, 2, 3, 4, 5]
이터레이터 = filter(홀수인가요, A)
print(list(이터레이터)) # [1, 3, 5]
## 리스트 내포로 똑같이 구현
print([
# 표현식
숫자
# 반복문
for 숫자 in range(1, 5 + 1)
# 조건문
if 숫자 % 2 == 1
])
# map() 직접 구현
def my_map(콜백함수, 리스트):
output = []
for 요소 in 리스트:
output.append(콜백함수(요소))
return output
def power(숫자):
return 숫자 ** 2
A = [1, 2, 3, 4, 5]
print(my_map(power, A)) # [1, 4, 9, 16, 25]
# filter() 직접 구현
def my_filter(콜백함수, 리스트):
output = []
for 요소 in 리스트:
if 콜백함수(요소):
output.append(요소)
return output
def is_odd(숫자):
return 숫자 % 2 == 1
print(my_filter(is_odd, A)) # [1, 3, 5]
2. 람다 / keyword 매개변수
# 람다 : 간단한 함수를 간단하게 해주는 문법
# 간단한 리턴 값을 갖는 함수들을 쉽게 만들 수 있음
# 여러 개의 매개변수를 사용 할 수 있
# def power(숫자):
# return 숫자 ** 2
power = lambda 숫자: 숫자 ** 2
print(power(10))
# def is_odd(숫자):
# return 숫자 % 2 == 1
is_odd = lambda 숫자: 숫자 % 2 == 1
# 한 줄 한에 무언가를 넣는 것 : 인라인
A = [1, 2, 3, 4, 5]
이터레이터 = map(lambda 숫자: 숫자 ** 2, A)
print(list(이터레이터))
# key 키워드 매개변수 (람다의 활용 예시)
A = [{
"제목" : "혼자 공부하는 파이썬",
"가격" : 18000
}, {
"제목" : "혼자 공부하는 머신러닝 + 딥러닝",
"가격" : 26000
}, {
"제목" : "혼자 공부하는 자바스크립트",
"가격" : 24000
}]
# def 가격(요소):
# return 요소["가격"]
# print(min(A, key=가격))
# print(max(A, key=가격))
print(min(A, key=lambda 책: 책["가격"]))
print(max(A, key=lambda 책: 책["가격"]))
A.sort(key=lambda 책: 책["가격"])
print(A)
'Base > Python' 카테고리의 다른 글
18. 이터러블/이터레이터/제너레이터 함수와 표현식 / 가독성 / 유지보수성 / 깊이우선탐색트리 알고리즘 구현 / (1) | 2023.03.10 |
---|---|
17. 기본 파일처리 / CSV 파일 읽고 쓰기 (0) | 2023.03.08 |
15. 튜플/ 이뮤터블 자료 / 뮤터블 자료 (0) | 2023.03.03 |
14. 재귀함수 / 피보나치수열 / 조기리턴과 리스트 평탄화 (0) | 2023.03.01 |
13. 메모리구조 / global 키워드 / 복사 (0) | 2023.02.27 |
댓글