lambda()
lambda 함수는 런타임에 생성해서 사용할 수 있는 일시적인 익명 함수입니다.
인공지능 프로그래밍에 많이 쓰이는 함수형 언어인 LISP 에서 물려받은 함수라고 합니다.
아래는 일반적인 함수 표현식입니다. -x 값을 리턴해주는 함수입니다.
>>> def func(x):
... return -x
>>> func(1)
-1
이것은 람다 형식으로 아주아주 간단하게 표현이 가능합니다.
>>> (lambda x:-x)(1)
-1
정말 쉽죠? 또는 아래와 같이 사용할 수도 있습니다.
>>> func = lambda x:-x
>>> func(1)
-1
따로 귀찮게 함수를 정의하지 않고도 바로 원하는 함수를 만들어 사용할 수 있기 때문에 map, filter, reduce, sorted 함수와 함께 쓰일 수 있습니다!
map()
map 함수는 map(함수, 리스트) 로 구성되어있습니다.
리스트의 인자를 함수의 파라미터로 넣어 리턴된 값을 다시 새로운 리스트로 반환해 줍니다.
>>> list(map(lambda x:-x, range(5)))
[0, -1, -2, -3, -4]
range(5)로 [0,1,2,3,4]라는 리스트를 생성하였고 이를 lambda x:-x에 적용하면, 위와 같이 0, -1, -2, -3, -4 라는 리스트가 생성됩니다!
filter()
filter 함수는 filter(함수, 리스트) 로 리스트의 인자들을 함수에 적용시켜서 결과가 참인 값들만 리스트로 반환합니다.
>>> list(filter(lambda x:x<2, range(5)))
[0, 1]
위의 경우 [0,1,2,3,4]중 2보다 작은 인자는 0, 1 이므로 이들이 리스트로 반환됩니다.
reduce()
reduce 함수를 사용할때는 from functools import reduce를 꼭 사용해야 합니다.
reduce 역시 reduce(함수, 순서형 자료)의 형태로 사용하는데, 순서형 자료를 함수에 적용한 값을 계속 누적시킵니다.
>>> from functools import reduce
>>> reduce(lambda x,y:x*y, range(1,5))
24
먼저 1과 2를 곱하고, 그 결과에 3을 곱하고 그 결과에 4를 곱해서 24라는 결과를 뱉습니다.
sorted()
>>> a = [(1,2), (2,1), (3,4), (5,3)]
>>> sorted(a, key=lambda x:x[1])
[(2, 1), (1, 2), (5, 3), (3, 4)]
a 리스트를 정렬할 때 key를 기준으로 정렬하는데, 이 key는 x[1]인 원소로 정하겠다는 뜻입니다.
x[1]의 값을 기준으로 잘 정렬된 것을 확인할 수 있습니다.
'파이썬' 카테고리의 다른 글
[Python3] 효율적인 반복자 itertools 사용하기 (0) | 2020.11.16 |
---|---|
[Python3] 리스트에서 최대 최소 찾기 min/max (0) | 2020.08.02 |
[Python3] .isdigit() .isdecimal() .isnumeric() 숫자 판별 (0) | 2020.07.23 |
[Python3] .sort 와 sorted() (0) | 2020.07.19 |
[Python3] 아스키 코드 변환하기 ord(), chr() 함수 (0) | 2020.07.16 |