[python] lambda , map() , filter()
A A
728x90

1. lambda 함수 기본 구조

lambda 매개변수들: 표현식
  • 함수 이름 없이 사용하는 익명 함수
  • 간단한 계산이나 함수를 간결하게 표현할 때 사용
예제
two = lambda: 2
sqr = lambda x: x * x
pwr = lambda x, y: x ** y

for a in range(-2, 3):
    print(sqr(a), end=" ")
    print(pwr(a, two()))
  • two()는 항상 2를 반환
  • sqr(a)는 a의 제곱
  • pwr(a, 2)는 a의 2제곱

 

2. map() 함수와 lambda

map(함수, 반복가능한객체)
반복 가능한 객체는 1개 이상일 수 있다.
예시 코드와 설명은 아래의 주석을 참고한다.
  • 반복 가능한 객체의 각 요소에 함수를 적용
  • map 결과는 이터레이터 → list()로 변환해서 사용
예제
list_1 = [x for x in range(5)]
list_2 = list(map(lambda x: 2 ** x, list_1))
print(list_2)

for x in map(lambda x: x * x, list_2):
    print(x, end=' ')
print()

# map의 경우 (function, ...iterable_object) 인자를 사용하여,
# function에 들어갈 인자값으로 iterable object을 사용하므로,
# map 자체 인자의 갯수가 여러개 일 수 있다.
# 예시는 다음과 같다.

a = [1, 2, 3]
b = [10, 20, 30]

# 두 리스트의 같은 인덱스끼리 더함
result = list(map(lambda x, y: x + y, a, b))
print(result)  # [11, 22, 33]
  • 2 ** x로 변환된 값들 출력
  • 그 후 각각을 제곱하여 출력

 

3. filter() 함수와 lambda

filter(함수, 반복가능한객체)
  • 함수의 조건을 만족하는 요소만 선별
  • True를 반환하는 요소만 남음
예제
from random import seed, randint

seed()
data = [randint(-10, 10) for x in range(5)]
filtered = list(filter(lambda x: x > 0 and x % 2 == 0, data))

print(data)
print(filtered)

# filter(function,iterable_object)으로 map과 구성 자체는 같으나
# iterable object을 fuction을 통해 걸러내야하기 때문에,
# filter() 자체의 인자는 두개로 고정되어 있다.

a = [1, 2, 3, 4, 5]

# 짝수만 필터링
result = list(filter(lambda x: x % 2 == 0, a))
print(result)  # [2, 4]
  • -10 ~ 10 사이의 난수 5개 생성
  • 그중 양수 & 짝수인 값만 필터링

 

정리

  형식 설명
lambda lambda x: 표현식 익명 함수 (간단한 함수 정의)
map() map(함수, 리스트) 모든 요소에 함수 적용
filter() filter(조건함수, 리스트) 조건을 만족하는 요소만 추출
Copyright 2024. GRAVITY all rights reserved