반응형

C언어에서 파이썬으로 넘어왔을 때 제일 이해하기 어려웠던 부분이 람다(lambda) 함수를 사용하는 것이었습니다. 저 같은 어려움을 느끼는 분들을 위해 이번 포스팅에서는 람다함수에 대해서 알아보겠습니다. 

파이썬 람다 lambda 함수 예제
파이썬 람다 lambda 함수 예제

파이썬 람다 lambda 함수 뜻

lambda function is a small anonymous function. 람다 함수는 익명함수를 뜻합니다. 특정한 기능을 수행하는 함수를 한 줄로 작성할 수 있어서 간편하고, map, filter, reduce와 함께 쓰이면 빛나는 역할을 하는 함수입니다. def를 사용하지 않고, 함수를 정의하고, 여러 매개변수 사용이 가능하지만, 표현식은 하나만 사용할 수 있다는 점이 특징입니다. 

lambda 매개변수(arguments) : 표현식(expression)

알고리즘 정렬 문제에서 key 값을 설정할 때 lambda 함수를 이용하면 더욱 디테일한 설정이 가능합니다.


python 람다함수 예제

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

print((lambda a,b: a+b)(2,5))

lambda a,b: a+b에서 a,b부분이 매개변수 부분이고, a+b부분이 표현식 부분입니다. def함수에서 함수 이름대신 lambda를 사용하고, 매개변수는 앞에 쓰고, return부분을 뒤에 써주면 됩니다. 


sort 함수 key lambda 사용 예제

이전에 sort 함수에서 key 값으로도 lambda를 사용할 수 있다고 설명했는데요, 아래 코드와 같이 사용할 수 있습니다. 아래 예제는 과일 이름과 과일 가격을 받아서, 가격 오름차순으로 정렬하는 코드입니다. 

n = 5
arr = []
for i in range(n):
    input_data = input().split()
    arr.append((input_data[0], int(input_data[1])))
# 과일 가격으로 정렬
arr= sorted(arr, key = lambda fruits: fruits[1])

for fruit in arr:
    print(fruit[0], end=' ')

# apple 5
# banana 3
# kiwi 4
# pear 7
# lemon 2
# 결과: lemon banana kiwi apple pear
lambda 매개변수: 표현식

map 함수 lambda 사용 예제

li = [1,2,3,4]
li2 = list(map(lambda a: a*2, li))
print(li2)
#[2, 4, 6, 8]

li의 값을 받아서 2배를 만들어 새로운 리스트 li2를 만드는 예제입니다.


filter 함수 lambda 사용 예제

li = [75,80,20,30,55,11,40]
#50보다 큰 수를 가지는 값 filter
filtered_li = list(filter(lambda a:a>50, li))
print(filtered_li)
#[75, 80, 55]

li 값에서 50보다 큰 수를 필터링해서 새로운 리스트 filtered_li를 만드는 예제입니다. 

반응형