파이썬 기본문법 - lambda, map, filter

.·2021년 9월 13일
0
post-custom-banner

Lambda

  • 익명
  • 한 영역에서 사용 즉시 소멸 ( 파이썬 가비지 컬렉션 Count=0)
  • 한번 사용하고 소멸되기 때문에, 일회성으로 쓸 경우 람다함수가 일반함수보다 용의

cf )

일반함수

  • 재사용을 위해 메모리에 저장 : 함수를 재사용해서 쓸 경우 람다함수보다 일반 함수가 용의

일반함수와 람다 함수의 비교

# 일반함수
def test(a,b,c):
    return a+b+c
    
result = test(1,2,3)
print(result) 
# 6

# 람다 함수
cul = lambda a, b, c: a + b+ c
print (cul(1,2,3)) 
# 6

Map

  • list 를 순회하면서 어떤 특정한 함수로 결과값을 도출할 때 map 함수를 쓰면 용의
  • 일회성 함수인 lambda 와 같이 사용하면 좋다

map 함수 일반 함수로 구현

digits = [x * 10 for x in range(1,11)]
print(digits1) # [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

def squared(x):
    return x ** 2

result = map(squared, digits1)
print(result) #<map object at 0x00000191A4E53C70>
print(list(result)) # [100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100, 10000]

map 함수 lambda 함수로 구현

digits = [x * 10 for x in range(1,11)]
print(digits1) # [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

result2 = list(map(lambda i: i ** 2, digits1))
print(result2) # [100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100, 10000]

map 함수 모듈화로 활용 : 재사용이 많은 경우 활용

def also_squared(nums):
    def double(x):
        return x ** 2
    return map(double, nums)

Filter

  • 특정 조건에 맞는 값들을 뽑아내는 함수
  • 보통 일반적으로 for 문안에 if 문을 사용해 원하는 값을 골라내는 예제에 for , if 대신 fitler 함수로 간결히 사용할 수 있다.

함수에는 True 나 False 를 판별해주는 조건문이 들어가야 한다.
ex ) x % 2 == 0

filter 함수 람다 함수로 구현

digits2 = [1,2,3,4,5,6,7,8,9,10,11,12]

result = list(filter(lambda x: x % 2 == 0, digits2))
print(result) # [2, 4, 6, 8, 10, 12]

일반함수 + 패키지 모듈로 활용 : 재사용이 많은 경우 활용

digits2 = [1,2,3,4,5,6,7,8,9,10,11,12]

def also_evens(nums):
    def is_even(x):
        return x % 2 ==0
    return fitler(is_even, nums)
profile
.
post-custom-banner

0개의 댓글