lambda 매개변수들 : 식
함수의 기능을 런타임에 생성해서 사용할 수 있는 익명 함수
결과 부분을 return 키워드 없이 자동으로 return해줌
정의와 동시에 사용할 수 있음
람다 표현식 안에서는 새 변수를 만들 수 없기에 변수가 필요한 코드면
def로 함수 작성하기
람다 표현식 자체를 호출하기 => (lambda 매개변수들 : 식)(인수들)
print((lambda x, y : x + y)(10, 20))
#출력 결과
#30
a = [1, 2, 3, 4, 5]
b = [2, 4, 6, 8, 10]
l = list(map(lambda x, y : x*y , a, b))
print(l)
#출력 결과
#[2, 8, 18, 32, 50]
reduce(함수, 반복가능한객체)
반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환하는 함수
reduce(function, [1, 2, 3, 4, 5])에서 list는 [function(1, 2), 3, 4, 5]로 하나의 요소가 줄고, 요소가 하나 남을 때까지 reduce(function, [function(1, 2), 3, 4, 5]) 반복
❗ 반복문으로 처리할 수 있는 경우 reduce 사용하지 말고 for, while 사용하기
from functools import reduce
nums = [i+1 for i in range(5)]
r = reduce(lambda x, y: x+y, nums)
print(r)
#출력 결과
#15
nums = [1, 3, 5, 7, 9, 11, 13]
l = list(filter(lambda x : x > 5 and x < 10, nums))
print(l)
#출력 결과
#[7, 9]
lambda 매개변수들: 식1 if 조건식 else 식2
nums = [i+1 for i in range(10)]
l = list(map(lambda x: str(x) if x%2==0 else x, nums))
print(l)
#출력 결과
#[1, '2', 3, '4', 5, '6', 7, '8', 9, '10']
def func(f, word):
print(f(1, 2))
print(word)
func((lambda x, y : x + y), "hello")
#출력 결과
#3
#hello
key
인자로 비교 함수 보내주기튜플
로 순서를 내보내줌l = [4, 2, 1, 6, -1, 5, 10, -10, 8]
l.sort(key=lambda x: x)
print(l)
#출력 결과
#[-10, -1, 1, 2, 4, 5, 6, 8, 10]
l = [[1, '카'], [5, '라'], [3, '나'], [2, '다'], [1, '가']]
l.sort(key = lambda x : x[0])
print(l)
l.sort(key = lambda x : (x[0], x[1]))
print(l)
#출력 결과
#[[1, '카'], [1, '가'], [2, '다'], [3, '나'], [5, '라']]
#[[1, '가'], [1, '카'], [2, '다'], [3, '나'], [5, '라']]
참고
https://wikidocs.net/22804
https://dojang.io/mod/page/view.php?id=2359
https://dojang.io/mod/page/view.php?id=2360
https://m.blog.naver.com/PostView.nhn?blogId=pjok1122&logNo=221590043882&proxyReferer=https:%2F%2Fwww.google.com%2F
https://offbyone.tistory.com/73