-
220714_부트캠프시작_python_2주_4일차 (복기)bigdata_bootcamp_12th/daily review 2022. 7. 14. 23:12
1. lambda, map, reduce
1) lambda (람다 표현식)
- 형식
ex) # ex = [ 1, 2, 3, 4, 5 ]
lambda 매개변수 : 식 if 조건식 # lambda a : a**2 if type(a) == int , ex[0]
# 입력받은 값 ex[0]의 값이 정수라면 제곱을 해라def 함수(a) :
a = a**2
return a
=> 함수와 매우 유사한 구조를 가지고 있다.- 장점 : 연산속도가 함수사용시 보다 빠르다고 한다.
- 단점 : 복잡한 계산을 넣으면 나같은 초보자는 보기도 힘들다.
- 여기서 ex를 그냥 넣는게아니라 ex[0]을 넣는 점에서 map과 시너지를 이룬다면 정말 좋다.
2) map
- 형식
ex) # func = 대충 제곱하는 함수 , ex = [ 1, 2, 3, 4, 5 ]
map ( 함수, 이터레이블( 반복 가능한 자료형 list, tuple 등.. ) # map( func, ex)위 람다에서는 ex[0], ex[1] 이런식으로 따로 값을 입력해준다면
map은 이터레이블 자료형 객체를 넣어 차례로 인덱스하여 값을 써준다.
3) lambda와 map의 시너지
list( map( lambda a : a**2, ex)) # 함수대신 lambda 이용, 리스트 ex 이용
=
[ 1, 4, 9, 16, 25 ]list ex[0] ~ [4], 즉 1~5까지 하나씩 차례로 lambda 함수문을 이용한다고 생각하면된다.
다만 map은 true or false 값으로 나오고 <map at 0x7efd6c702ad> 같은 지수 배당값으로 출력이 되서
list로 다시 묶어 해당 값들을 보기좋게 보관한다.
4) reduce
- 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환
- functools 모듈에서 reduce 함수를 가져와야 함
- 형식
reduce(함수, 이터레이블( 반복 가능한 자료형 list, tuple 등.. ),initializer=None)
- 역시 lambda와 시너지가 좋다.
test2 = [{'name' : '신짱구', 'age' : 5}, {'name' : '신짱아', 'age' : 4}, {'name' : '흰둥이', 'age' : 8}] avg_age = [n['age'] for n in test2] reduce(lambda x ,y : x + y, avg_age)/len(avg_age)
avg_age 라는 리스트에 'age'키의 값을 먼저 나열하고
reduce 와 lambda를 이용해 순차적으로 더한다
그리고 'age' 키의 갯수로 나누어 평균을 구한다.'bigdata_bootcamp_12th > daily review' 카테고리의 다른 글
220718_부트캠프시작_python_3주_1일차 (복기) (0) 2022.07.18 220715_부트캠프시작_python_2주_5일차 (복기) (0) 2022.07.17 220713_부트캠프시작_python_2주_3일차 (복기) (0) 2022.07.13 220712_부트캠프시작_python_2주_2일차 (복기) (0) 2022.07.12 220711_부트캠프시작_python_2주_1일차 (복기) (0) 2022.07.11