[Python] 파이썬 lambda 란?
resilient
·2021. 9. 1. 22:14
이번 시간에는 파이썬 알고리즘을 풀 때, 그중에서도 정렬 문제를 풀 때 많이 보게 되는 lambda에 대해서 간단하게 정리해보려고 한다.
lambda 란?
lambda는 그리그 문자 중 11번째 글자이고, AWS서비스 이름으로도 사용되고 많은 프로그램에서도 사용되고 있다.
파이썬에서의 lambda는 런타임에 생성해서 사용할 수 있는 '익명 함수' 이다.
함수형 프로그래밍 언어에서의 lambda와 같은 건 아니지만 map(), filter(), sort() 등에서 많이 사용되는 기능이다.
lambda는 쓰고 버리는 일시적인 함수이다. 즉, 간단한 기능을 일반적인 함수와 같이 정의해두고 쓰는 것이 아니고 필요한 곳에서 즉시 사용하고 버릴 수 있기 때문에 코드가 간결해지고 메모리가 절약된다.
lambda 사용법
lambda는 아래와 같이 사용한다.
lambda 인자리스트: 표현식
간단한 예시를 살펴보자.
function = lambda x : x + 1
function(4)
# 5
위와 같이 코드를 사용해서 임의의 함수를 만들어서 사용할 수 있다.
다음으로는 lambda와 함께 쓰이는 함수들을 알아보고 lambda함수가 어떻게 쓰이는지 알아보자.
- map() 함수
람다 함수의 장점은 map() 함수와 함께 사용될 때 진가를 발휘한다. map() 은 쉽게 말하면 짝을 이어주는 함수이다.
function = map(function, iterable,...)
첫 번째 인자 function는 함수의 이름이다. 두 번째 인자 iterable은 한 번에 하나의 멤버를 반환할 수 있는 객체이다.
(list, str, tuple)
map() 함수는 function을 iterable의 모든 요소에 대해 적용하고 function에 의해 변경된 iterator를 반환한다.
아래 예시를 보자.
a = [1,2,3,4]
b = [17,12,11,10]
list(map(lambda x, y:x+y, a,b))
#[18, 14, 14, 14]
- filter() 함수
filter() 함수도 두 개의 인자를 가진다.
function = filter(function, iterable)
filter에 인자로 사용되는 function은 처리되는 각각의 요소에 대해 Boolean 값을 반환한다.
True를 반환하면 그 요소는 남게 되고, False를 반환하면 그 요소는 제거된다.
아래 예시를 보자.
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
list( filter(lambda x: x % 3 == 0, foo) )
# [18, 9, 24, 12, 27]
- sort() 함수
sort()와 sorted() 모두 정렬 함수이다.
문자열, 리스트, 튜플, 딕셔너리, 집합 구조에서 모두 사용 가능하고 정렬 기준이 되는 key값을 정하고
lambda와 함께 사용하면 된다.
아래 예시를 보자.
('schedule 리스트를 원소들 중 0번째 인덱스를 key로 정렬하겠다'라는 의미이다.)
schedule = sorted(schedule,key=lambda x : x[0])
'Language > Python' 카테고리의 다른 글
[Python] join함수 란? (0) | 2021.07.04 |
---|---|
[Python] 파이썬 eval함수 란? (0) | 2021.07.03 |
[Python] list comprehension이란? (0) | 2021.07.01 |
[Python]파이썬 정리노트(계속 업데이트) (0) | 2021.05.28 |