본 글은 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 |