๐Ÿ“–lambda

์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜ ๊ฐ„๋‹จํ•œ ํ•œ ์ค„์งœ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ

lambda argument : expression
  • arguments : ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ 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