[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

"""

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다