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(조건함수, 리스트) |
조건을 만족하는 요소만 추출 |