(Machine) 2. Lambda & MapReduce
1. 학습 목표
함수처럼 사용가능한 익명함수인 Lambda, Sequence 자료형의 데이터에서 함수를 적용하는 방법인 Map Function 과 Reduce Function 에 대해서 여러 예제 코드를 이용해 실습하면서 Pythonic Code 를 작성하는 방법에 대해 공부합니다.
2. Lambda
- 함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
- 수학의 람다 대수에서 유래함
- python 3부터는 권장하지는 않으나 여전히 많이 쓰임 (List comprehensions 기능으로 대체 가능하기 때문에…)
1) Lamda 코드 예제
def f(x, y):
return x + y
print(f(1, 4))
f = lambda x, y: x + y
print(f(1, 4))
# 제곱
f = lambda x: x ** 2
print(f(3))
f = lambda x: x / 2
print(f(3))
print((lambda x: x + 1)(5))
2. Map Function
- Sequence 자료형 각 element에 동일한 function을 적용함
- Sequence 자료형 = List, Tuple 등
1) Map Function 코드 예제
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]
# lamda 내에 필터를 적용한 예제
# 필터를 적용할때 else를 꼭 명시해야된다.
ex = [1, 2, 3, 4, 5]
list(map(
lambda x: x ** 2 if x % 2 == 0 else x, ex)
)
# ======출력======
# [1, 4, 3, 16, 5]
2. Reduce Function
- map function과 달리 list에 똑같은 함수를 적용해서 통합
1) Reduce Function 코드 예제
# list안에 있는 모든 element를 왼쪽에서 오른쪽으로 하나씩 합친 결과...
print(reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]))
# ======출력======
# 15
# factorial 이 Reduce 를 이해하기 좋다..
def factorial(n):
return reduce(
lambda x, y: x*y, range(1, n+1))
# 1*2 부터 시작하여 5까지 차례차례 곱해나가는게 Reduce 개념
factorial(5)
# ======출력======
# 120
댓글남기기