람다 (lambda)
람다(lambda) 함수란
파이썬에서 lambda
는 런타임에 생성해서 사용할 수 있는 익명함수
입니다. 즉, 쓰고 버리는 일시적인 함수입니다.
람다함수의 특징
- 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다.
- 즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다.
- 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다.
람다식 표현
- 파라미터와 몸체로 구분된다.
- 파라미터와 몸체 사이에
->
구분을 추가하여 람다식을 완성시킨다.
(파라미터) -> {몸체}
lambda 인자리스트: 표현식
람다 함수를 즉석에서 생성하고, 반환한다.
>>> g = lambda x: x**2
>>> print(g(8))
64
>>>
>>> f = lambda x, y: x + y
>>> print(f(4, 4))
8
기본활용
lambda x: int(x)
문자열 변수를 정수형으로 변환.
lambda x,y: x>y
x, y 값을 비교.
lambda x: x['key']
딕셔너리에서 key를 이용해 value를 얻음.
다른 내장함수와의 활용
- min, max
# min, max 함수
names = ['Suh', 'Adrian', 'Bill', 'Jonathan']
# longest : 길이가 가장 긴 이름
longest = max(names, key= lambda n: len(n))
print(longest)
# Jonathan
key 를 lambda n: len(n) 로 부여해 가장 길이가 긴 이름을 리턴한다.
# min, max 함수
dict = {'q': -1, 'a': 1, 'c': 2, 'b': 2}
max(list, key=lambda item: item[1])
>>> ('b', 2)
두번째 항목을 기준으로 비교해서 MAX를 찾는다.
- sort 함수
keys = [{'key': 8}, {'key': 5}, {'key': 9}, {'key': 3}] # sort 함수 keys.sort(key = lambda x: x['key']) # [{'key': 3}, {'key': 5}, {'key': 8}, {'key': 9}]
keys 리스트를 내부의 ‘key’ 들의 value를 기준으로 정렬하였다.
- filter 함수
# filter 함수 filter(lambda x: x['key']<5, keys)
‘key’ 들의 value가 5보다 작은 요소들을 가져온다.
- map 함수
# map 함수 map(lambda x: x['key']+5, keys)
모든 ‘key’ 의 value에 5를 더한다.
댓글남기기