๐lambda
์ด๋ฆ์ด ์๋ ํจ์ ๊ฐ๋จํ ํ ์ค์ง๋ฆฌ ํจ์๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ
lambda argument : expressionarguments: ํจ์์ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์expression: ํจ์์ ๋ฐํ๊ฐ์ ๊ฒฐ์ ํ๋ ํํ์ โlambdaํจ์๋expression์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์๋์ผ๋ก ๋ฐํ- ๊ฐ๋จํ ํํ์์ ์ ํฉ
(์ฌ๋ฌ ํํ์์ด ํ์ํ ๊ฒฝ์ฐ,
defํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ์ด ๋ ์ข์) - ์๋ก์ด ๋ณ์ ํ ๋น ๋ถ๊ฐ๋ฅ
๐์ฌ์ฉ ์์
- ํํฐ๋ง
- ๋ฐ์ดํฐ ์ ๋ ฌ
- ํจ์๋ฅผ ์ธ์๋ก ๋๊ธฐ๋ ๊ฒฝ์ฐ
- ํจ์๋ฅผ ํ ๋ฒ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๐๊ฐ๋จํ ํจ์
lambda ํจ์
add = lambda x, y: x + y
lambdaํจ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด?def add(x, y): return x + y
๐with map
mapํจ์๋ก iterableํ ๊ฐ์ฒด์ ๋ชจ๋ ์์์ ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋lambdaํจ์๋ฅผ ์ฌ์ฉ
nums = [1, 2, 3, 4, 5]
result = list(map(lambda x: x * 2, nums)) # [2, 4, 6, 8, 10]๐with sorted
sortedํจ์๋ฅผ ํตํด ์ ๋ ฌํ ๋,lambdaํจ์๋ฅผ ํตํด ์ ๋ ฌ ๊ธฐ์ค ์ง์
list1 = ["aaaaa", "aaa", "a"]
list2 = [(5, 1), (4, 2), (4, 3), (3, 4), (2, 1), (1, 5)]
result1 = sorted(list1, key=lambda x: len(x)) # ["a", "aaa", "aaaaa"]
result2 = sorted(list2, key=lambda x: (x[0], -x[1])) # [(1, 5), (2, 1), (3, 4), (4, 3), (4, 2), (5, 1)]๐with filter
filterํจ์๋ก iterableํ ๊ฐ์ฒด์ ๋ชจ๋ ์์ ์ค์์ ์กฐ๊ฑด์ ๋ง๋ ์์๋ง์ ๋ฐํํ ๋,lambdaํจ์๋ก ์กฐ๊ฑด ์ง์
nums = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x%2, nums)) # [1, 3, 5]๐with reduce
reduceํจ์๋ก iterableํ ๊ฐ์ฒด์ ๊ฐ ์์๋ฅผ ๋์ ์ ์ผ๋ก ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋,lambdaํจ์๋ก ์กฐ๊ฑด ์ง์
from functools import reduce
abcs = ["a", "b", "c", "d", "e"]
result = reduce(lambda x, y: y + x, abcs) # edcba