Study/python

[3.11.1] Lambda function

minzihun 2022. 12. 9. 01:29

 람다함수는 작은 익명 함수이다. 인수 (arguments)의 개수는 상관없지만, 단 하나의 표현만 사용할 수 있다. 또 다른 함수 안에서 익명함수로 작용할 때, 람다함수가 진가를 발휘한다.

lambda arguments : expression

# 바로 값을 얻으려는 경우 소괄호로 값을 넣어줄 수 있다.
(lambda arguments : expression)(value)

 람다함수는 map(), reduce(), filter() 함수와의 조합으로 많이 쓰인다.

# map(function, iterable)
# 반복 가능한 자료형의 원소를 함수에 넣어 값을 반환하는 함수
# map함수의 반환 값은 map객체임으로 list 혹은 tuple형으로 변환시켜줘야한다.
>>> list(map(lambda x: x ** 2, range(5)))
[0, 1, 4, 9, 16]

# reduce(function, sequence)
# 시퀀스(string, list, tuple)의 원소들을 집계함수(인자가 두 개인)에 적용시켜 누적하여 더 한다.
# 이 때, 집계함수의 인자 1개는 결과값을 누적한 누적자이다. 누적자 + 시퀀스의 한 원소 -> 누적자
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
10
>>> reduce(lambda x, y: y + x, 'abcde')
'edcba'

# filter(function, iterable)
>>> list(filter(lambda x: x < 5, range(10)))
[0, 1, 2, 3, 4]
>>> list(filter(lambda x: x % 2, range(10)))
[1, 3, 5, 7, 9]