Programming/Python

[Python] lambda function - 파이썬 람다(Lambda)함수

EunjiBest 2022. 1. 20. 14:29

python lambda function - 파이썬 람다(Lambda)함수 

 

 

 

람다(Lambda)함수 

 

lambd는 함수 를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다.

일반 함수를 한줄로 간결하게 만들 때 사용된다.

 

def를 사용할 정도로 복잡하지 않거나 def를 사용할 수 없을 때 쓰인다.

 

lambda 매개변수1, 매개변수2, ... : 매개변수를 사용한 표현식

 

>>> add = lambda a,b : a+b
>>> result = add(3,4)
>>> print(result)

add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda함수.

>>> def add(a,b):
 	 return a+b

>>> result = add(3,4)
>>> print(result)

위 lambda를 사용한 함수와, def를 사용한 함수는 같은 결과(7)를 내는 코드이다.

 

 

 

 

Key

특히 딕셔너리는 순서가 없기 때문에 정렬을 위해서 lambda사용을 한다.

 

간단한 딕셔너리를 만들고

>>> data = [{'first':'김', 'last':'은지', 'yyyy':1956},
        {'first':'이', 'last':'영수', 'yyyy':1906},
        {'first':'박', 'last':'영희', 'yyyy':1912}]

 

key라는 매개변수에 아이템을 정렬할 키를 반환해 주는 함수를 지정한다.

>>> sorted(data, key=lambda item: item['first'])

[{'first': '김', 'last': '은지', 'yyyy': 1956},
{'first': '박', 'last': '영희', 'yyyy': 1912},
{'first': '이', 'last': '영수', 'yyyy': 1906}]

first의 한글 순서대로 정렬이 된 것을 볼 수 있다.

>>> sorted(data, key=lambda item: item['last'])

[{'first': '이', 'last': '영수', 'yyyy': 1906},
 {'first': '박', 'last': '영희', 'yyyy': 1912},
 {'first': '김', 'last': '은지', 'yyyy': 1956}]
 
 
 >>> sorted(data, key=lambda item: item['yyyy'])
 
 [{'first': '이', 'last': '영수', 'yyyy': 1906},
 {'first': '박', 'last': '영희', 'yyyy': 1912},
 {'first': '김', 'last': '은지', 'yyyy': 1956}]

마찬가지로 'last' 와 'yyyy'의 순으로 정렬이 된 것을 확인한다.

 

 

 

 

map()

 

map(함수, 리스트)

이 함수는 함수와 리스트를 인자로 받는다.

리스트로 원소를 꺼내서 함수를 적용시킬 수 있고, 그 결과를 새로운 리스트에 담아서 리턴한다.

>>> list(map(lambda x: x ** 2, [1,2,3]) )

[1, 4, 9]

리스트[1,2,3]을 lambda함수 x에 돌려 [1,4,9]를 출력한다.

>>> list(map(lambda x: x ** 2, range(3))) 

[0, 1, 4]

range(3)의 리스트 [0,1,2]를 2제곱 해준 [0,1,4]가 출력된다.

 

 

reduce()
reduce(함수, 시퀀스)

시퀀스의 값을 누적시킨다.

>>> from functools import reduce
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3])

6

reduce함수는 functools에서 reduce모듈을 import 시켜줘야 사용이 가능하다.

0+1 = 0

0+1 = 1

1+2 = 3

3+3 = 6

이렇게 값이 누적되면서 더해져 출력이 된다.

 

 

filter()
filter(함수, 리스트)

리스트에 들어있는 원소들이 함수에 적용시켰을 때 Ture 값들로 리턴이 되는 함수.

>>> list(filter(lambda x: x < 3, [1,2,3,5,7]))

[1, 2]

 리스트 [1,2,3,5,7] 중 x가 3보다 작은 값이 리스트로 출력된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형