람다(Lambda)란?
- 함수를 생성할 때 사용하는 예약어 (= def)
- 간결함 함수를 만들 때 사용
- run time에 생성하여 사용
- 예약어를 사용할 경우 return 명령어가 없어도 반환
- 예약어를 사용하지 않을 경우 재사용이 불가능
사용법
lambda 매개변수1, 매개변수2, … : 표현식
쉬운 예
두개의 인수 더한 값을 돌려주는 함수
- 예약어 사용 O
>>>add = labmda a, b: a+b
>>>result = add(3, 4)
>>>print(result)
- 예약어 사용 X
x = lambda a, b: a + b //a = 1, b = 2
print(x)
3
if 활용
score = [60, 79, 88, 56, 90]
result = list(map(lambda x : ‘pass’ if x>=60 else ‘fail’, score)) *맵에 대한 설명은 뒤에
print(result)
[‘pass’, ‘pass’, ‘pass’, ‘fail’, ‘pass’]
같이 사용할 함수들( map, filter, reduce)
- map()함수
map()은 두개의 인수를 가짐 map(함수, 반환할 객체)
함수를 객체의 모든 요소에 적용해 변경시키고 변경된 값을 다시 객체에 반환한다.
**python 3에서 map은 generator형으로 반환되므로 list()로 변환시켜줘야함 - map() 예시
두 리스트의 합 구하기
a = [2, 4, 6, 8]
b = [1, 3, 5, 7]
result(map(lambda x, y : x + y, a, b))
print(result)
[3, 7, 11, 15]
- filter()함수
filter()의 형식은 map과 같고, 각각의 요소에 대해 Boolean값을 반환
Boolean값이 False 일 경우 요소 제거
**python 3에서 filter는 generator형으로 반환되므로 list()로 변환시켜줘야함 - filter()의 예
a = [1, 2, 3, 4, 5, 6]
result = list((filter(lambda x : x % 2 == 0, a)))
print(result)
[2, 4, 6]
- reduce()함수
reduce는 내장함수가 아니기 때문에 import 시켜야 함 from functools import reduce
reduce()의 형식은 reduce(함수, 객체)이며 리스트의 요소가 하나만 남을때까지 반복하게 됨
reduce()의 예
a = [1, 2, 3, 4]
result = reduce(lambda x, y : x + y, a))
print(result)
15 // (((1 + 2) + 3) + 4)