본문 바로가기

Python

[Python] lambda & map & reduce

본 글은 BoostCourse에서 '머신러닝을 위한 파이썬' 강의를 듣고 작성한 글입니다.

1. lambda

함수 이름 없이, 함수처럼 쓸 수 있는 익명함수이다.

 

다음 f함수는

def f(x, y):
    return x + y


print(f(1, 4))

 

 

이렇게 람다를 이용해서 나타낼 수 있다.

f = lambda x, y: x + y
print(f(1, 4))
 

2. map

sequence자료형에 함수 적용을 하나하나 한꺼번에 할 때 굉장히 유용하게 사용된다.

(python2에서는 print(map(f, ex))해도 [1, 4, 9, 16, 25]의 list 결과가 나오지만 python3에서는 list(map(f, ex))를 해줘야지 list형태로 나온다.)

ex = [1, 2, 3, 4, 5]
f = lambda x: x ** 2
print(list(map(f, ex))) 
#[1, 4, 9, 16, 25]

 

zip대신 사용할 수 있다.

ex = [1, 2, 3, 4, 5]
f = lambda x, y: x + y
print(list(map(f, ex, ex)))

#[2, 4, 6, 8, 10]

 

filter와 함께 사용할 수 있다. 단, else에 대한 값도 있어야 한다.

list(map(lambda x: x ** 2 if x % 2 == 0 else x, ex))
#[1, 4, 3, 16, 5]

 

map을 사용하면 for문을 사용하지 않고 iterable의 모든 멤버의 type을 일괄 변환할 수 있다.

list1 = ['1', '100', '33']
list2 = list(map(int, list1))
 

3. reduce

여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해 사용합니다.

초기값을 기준으로 루프를 돌면서 데이터에 집계함수를 적용하면서 데이터를 누적합니다.

reduce(집계 함수, 순회 가능한 데이터)

예시

1+2=3 -> 3+3=6 -> 6+4=10 -> 10+5=15

from functools import reduce
print(reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])) 
# 15
참고: reduce함수,

'Python' 카테고리의 다른 글

[Python] [정수 다루기] 몫과 나머지 - divmod  (0) 2021.01.09
[Python] Asterisk  (0) 2021.01.07
[Python] join과 split  (0) 2021.01.05
[Python] 문자열 소문자 또는 대문자로 바꾸기  (0) 2021.01.05
[python] 2차원 배열 선언  (0) 2020.09.30