오늘 글을 작성할 주제는 바로 파이썬 람다이다. 코딩테스트를 연습하며 준비하던 중 람다를 이용하여 return 한 줄로 문제를 푸시는 대단한 능력자들을 보고 다시 문법을 확실히 익혀야겠다 라는 생각으로 람다를 다시 한번 정리하게됐다.
Python lambda란 쉽게 말하면 함수를 딱 한줄로 만들어주는 친구이다. 예시를 들어보자 아래는 람다를 쓰지 않은 코드이다.
>>> def plus(x, y):
... return x+y
...
>>> plus(20,30)
50
이번엔 람다를 써서 위와 똑같은 함수를 만들어보자.
>>> (lambda x,y: x+y)(20,30)
50
굉장히 짧고 간단하게 함수를 뚝딱해주는 것을 볼 수 있다. 이제 람다 함수를 사용하는 대표적인 함수들을 알아보자.
map(함수, 리스트)
이 함수는 함수와 리스트를 인자로 받아 사용한다. 리스트로부터 원소를 하나씩 꺼내서 함수에 적용시킨 다음, 그 결과를 새로운 리스트에 담는다.
>>> list(map(lambda x: x ** 2, range(5)))
[0,1,4,9,16]
(lambda x : x ** 2, range(5) 는 x가 1씩 커지며 그 x의 제곱을 호출하는 람다 함수이다.)
reduce(함수, 시퀀스)
시퀀스(문자열, 리스트, 튜플)의 원소들을 누적적으로 함수에 적용시킨다.
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
10
filter(함수, 리스트)
리스트에 들어있는 원소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 만들어준다. 아래의 코드는 x가 0~9 까지 증가할때 5보다 작은 숫자들을 새로운 리스트로 반환해준다.
>>> list(filter(lambda x: x < 5, range(10)))
[0, 1, 2, 3, 4]