[Python]Lambda, Reduce, Map, Filter
Lambda, Reduce, Map, Filter 에 대해 알아보자
"""
Lambda, Reduce, Map, Filter
- lambda : 익명함수, 힙영역에서 사용 -> 즉시소멸
- 일반함수 : 재사용성을 위해 메모리에 저장
- 시퀀스형 전처리에 Reduce, Map, Filter 주로 사용
"""
# 예1
cul = lambda a, b, c: a * b + c
print(f'Ex1 > ', cul(10, 20, 30))
"""
Ex1 > 230
"""
# 예2
digits1 = [x * 10 for x in range(1, 11)]
print('Ex2 > ', digits1)
result = list(map(lambda i: i ** 2, digits1))
print('Ex2 > ', result)
def also_square(nums):
def double(x):
return x ** 2
return list(map(double, nums))
print('Ex2 > ', also_square(digits1))
"""
Ex2 > [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
Ex2 > [100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100, 10000]
Ex2 > [100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100, 10000]
"""
# 예3
digits2 = list(range(1, 11))
result = list(filter(lambda x: x % 2 == 0, digits2))
print('Ex3 > ', result)
def also_even(nums):
def is_even(x):
return x % 2 == 0
return list(filter(is_even, nums))
print('Ex3 > ', also_even(digits2))
"""
Ex3 > [2, 4, 6, 8, 10]
Ex3 > [2, 4, 6, 8, 10]
"""
# 예4
from functools import reduce
digits3 = list(range(1, 101))
result = reduce(lambda x, y: x + y, digits3)
print('Ex4 > ', result)
def also_add(nums):
def add_num(x, y):
return x + y
return reduce(add_num, nums)
print('Ex4 > ', also_add(digits3))
"""
Ex4 > 5050
Ex4 > 5050
"""
최신 댓글