1) 일반함수와 람다함수의 형식 차이
일반함수
def plus(x, y):
a = x + y
return a
람다함수 (lambda 매개변수들 : 식)
lambda x, y : x + y
# x = 3, y = 5일때 8을 반환
2) map과 filter (lambda함수는 표현식 자체를 사용하기보단, map이나 filter를 함께 사용하기에 꼭 알아두셔야 합니다.)
기본형식: map(함수, 리스트 or 튜플) / map 원리는 리스트 원소를 하나씩 꺼내서 함수에 적용하는 것
예시) 매개변수가 하나일 때
def plus(x):
return x + 10
list(map(plus, [1, 2, 3, 4, 5, 6]))
결괏값: [10, 20, 30, 40, 50, 60]
list(map(lambda x: x + 10, [1, 2, 3, 4, 5, 6]))
결괏값: [10, 20, 30, 40, 50, 60]
* list를 함께 사용해주는 이유: map의 결과는 map 객체이기 때문에 눈으로 확인할 수 없기 때문입니다.
예시) 매개변수가 두 개일 때
첫번째
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
list(map(lambda x, y : x * y, a, b))
결괏값: [2, 6, 12, 20]
두번째 (위와 결괏값 동일)
list(map(lambda x, y : x * y, [1, 2, 3, 4], [2, 3, 4, 5]))
결괏값: [2, 6, 12, 20]
기본형식: filter(함수, 리스트 or 튜플) / filter 원리는 리스트 원소를 하나씩 꺼내서 함수에 적용하고 참인 값만 리스트로 반환하는 것
def y(x):
return x > 5
list(filter(y, [3, 4, 5, 6, 7]))
결괏값: [6, 7]
list(filter(lambda x : x > 5, [3, 4, 5, 6, 7]))
결괏값: [6, 7]
3) lambda 함수로 조건부 표현식 활용하기
- lambda x : 식1 if 조건식 else 식2 / 조건식을 만족하면 식1을 반환하고 만족 못하면 식2를 반환
# x가 1이라면, 문자로 반환하고, 아니면 바로 반환하는 조건식
list(map(lambda x : str(x) if x == 1 else x, [1, 2, 3, 4, 5]))
결괏값: ['1', 2, 3, 4, 5]
* 주의사항 lambda함수에서 조건부 표현식을 할 때 elif는 사용할 수 없어요.
그렇기 때문에 조건을 여러 번 하려면 if - else식을 여러번 입력해야 합니다.
ex) 조건식 여러번 입력했을 때
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(map(lambda x: str(x) if x == 1 else float(x) if x == 2 else x + 10, a))
['1', 2.0, 13, 14, 15, 16, 17, 18, 19, 20]