-
[Python] lambda, map, filter, reduce💫 Computer Science/Python & AI Framework 2020. 2. 5. 17:41
lambda(), map(), filter(), reduce() 함수는 함수를 간단하게 만들어주는 함수들로 파이썬에서 프로그래밍할 때 if elif else문을 이용하여 복잡하게 하드코딩할 필요없이 한줄로 함수를 구현하게 해주는 함수들입니다.
● lambda()
lambda 인자 : 표현식
함수를 한 줄로 만들어주는 함수입니다.
def plus(x, y): return x + y plus(10, 20)
와 같은 함수를 람다함수를 사용하면 함수명을 명시하지 않고 함수를 사용할 수 있습니다.
(lambda x,y:x + y)(10, 20)
람다함수는 런타임에서 생성해 사용할 수 있는 익명함수로, 쓰고버리는 일시적인 함수입니다.
이러한 람다함수도 람다함수를 변수에 할당하여 재사용할 수 있습니다.
lambdaAdd = lambda n,m:n+m print(lambdaAdd(1,2)) # 결과 3
람다식 안에서 조건도 사용 가능합니다.
print((lambda n,m: n if n%2==0 else m)(1,3)) # 결과 3 print((lambda n,m: n if n%2==0 else m)(2,3)) # 결과 2
그리고 람다함수는 map, filter, reduce처럼 매개변수로 함수가 필요한 곳에 유용하게 사용할 수 있습니다.
● map()
map(함수, 리스트)
map()은 함수와 리스트를 인자로 받습니다. 그리고 그 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아줍니다.
map(lambda x: x ** 2, range(5)) # 파이썬 2 # 결과 [0, 1, 4, 9, 16] list(map(lambda x: x ** 2, range(5))) # 파이썬 2 및 파이썬 3 # 결과 [0, 1, 4, 9, 16]
● reduce()
reduce(함수, 순서형 자료)
reduce()는 순서형 자료인 문자열, 리스트, 튜플의 원소를 누적하여 함수에 적용시킵니다.
from functools import reduce # 파이썬 3 reduce(lambda x, y: x + y, [0, 1, 2, 3, 4]) # 결과 10
0과 1을 더하고, 그 결과에 3을 더하고, 그 결과에 4를 더하고를 반복합니다.
● filter()
filter(함수, 리스트)
리스트에 있는 원소들을 함수에 적용시켜 결과가 참인 값들로 새로운 리스트를 만들어주는 함수가 filter()입니다.
filter(lambda x: x < 5, range(10)) # 파이썬 2 # 결과 [0, 1, 2, 3, 4] list(filter(lambda x: x < 5, range(10))) # 파이썬 2 및 파이썬 3 # 결과 [0, 1, 2, 3, 4]
참고글 : Python Lambda Function
'💫 Computer Science > Python & AI Framework' 카테고리의 다른 글
[Keras] Embedding Layer에 word2vec 주입하기 (4) 2020.02.21 [Gensim] 자연어 처리3 - Gensim의 Word2Vec으로 토픽모델링 (0) 2020.02.17 [NLTK] 자연어 처리2 - NLTK로 데이터 탐색 (0) 2020.01.31 [KoNLPy] 자연어 처리1 - KoNLPy로 데이터 전처리 (0) 2020.01.28 [캐글] 중고차 가격 예측 모델2_Gradient Boost, Random Forest (3) 2020.01.16