Python
[Python] lambda(람다)
wonhwa
2021. 9. 29. 11:16
반응형
람다(Lambda)란?
원래 파이썬에서는 함수를 만들 때 def를 사용하여 반복되는 작업을 정의된 함수로 처리한다.
이 때 lambda는 파이썬에서 함수를 더 간결하게 표현하기 위해 만들어진 함수이다.
일반함수→ def(매개변수,매개변수):
프로그램
return 반환값
lambda→ lambda 매개변수: 표현식(return반환값)
예를 들어 두 인수를 더하는 값을 반환값으로 가지는 함수를 각각 만들어 본다고 하자.
#def를 이용하여 두 인수를 더하는 함수 만들기
def add(num1,num2):
return num1 + num2
add(3,4)
결괏값: 7
#lambda를 이용하여 두 인수를 더하는 함수 만들기
add = lambda num1, num2: num1 + num2
add(2,4)
결괏값: 6
이렇게 lambda는 def를 쓸 때보다 간단하게 함수를 만들 수 있다.
map
map은 여러 개의 데이터를 한 번에 return 반환을 할 때 사용하면 편리하다.
때문에 리스트형이나 튜플등의 자료구조에서 사용하기 용이하다.
map을 이용하여 7,8,9에 각각 7을 곱하여 출력하는 lambda를 만들어 보도록 하자.
#map을 이용하여 lambda 만들기
multiple_nums = [7,8,9]
multiple_result = list(map(lambda x: x*7,multiple_nums))
multiple_result
결괏값: [49,56,63]
filter
필터는 말 그대로 특정 조건을 가지고 필터를 한 결과를 보여준다.
예제로 list 값(1~30) 중에서 3의 배수만 결과를 보여주는 lambda를 만들어 보자.
#list comprehension을 이용해 1~30을 가지는 list 만들기
list1 = [i+1 for i in range(30)]
#filter를 사용하여 list1에서 3의 배수만 추출하기
list2 = list(filter(lambda i: i%3 == 0,list1))
list2
결괏값: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
reduce
reduce는 계산기의 memory(M) 기능과 같이 함수를 만들어 앞의 결과를 누적한 뒤 결과값을 반환하는 함수이다.
예를 들어 입력된 수를 다 더해주는 add함수를 만든다고 해 보자. def와 lambda를 이용한 2가지 방법을 사용하겠다.
#def로 add만들기
def add(*a):
total = 0 #더한 결과값을 저장하는 변수
for i in a:
total +=i #total = total + i와 같음
return total
add(1,2,3,4)
결괏값: 10
#reduce로 add 계산하기
from functools import reduce #python3부터는 reduce를 import해야 사용이 가능
a = [1,2,3,4]
add = reduce(lambda x,y: x+y, a)
add
결괏값: 10
위와같이 reduce를 사용하면 for문 생략하여 코딩을 할 수 있다.
참고자료
예제파일
마무리
오늘은 lambda를 사용하여 함수를 간결하게 만드는 방법을 배웠다.
추후 코딩시에 유용하게 사용하길 바라며 ...
질문은 언제나 환영입니다. :)
반응형