Backend/Python

python - lambda ν•¨μˆ˜

2-doooo-2 2024. 4. 17. 11:51
728x90
λ°˜μ‘ν˜•

πŸ“Œlambda ν•¨μˆ˜λž€?

νŒŒμ΄μ¬μ—μ„œμ˜ lambda ν•¨μˆ˜λŠ” 읡λͺ… ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ λ°©λ²•μž…λ‹ˆλ‹€. 즉, 이름 없이, ν•œ μ€„μ˜ κ°„λ‹¨ν•œ μ½”λ“œλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. lambda ν•¨μˆ˜λŠ” κ°„λ‹¨ν•œ μ—°μ‚°μ΄λ‚˜ λ‹€λ₯Έ ν•¨μˆ˜μ— 인자둜 μ „λ‹¬λ˜λŠ” ν•¨μˆ˜ 등을 λΉ λ₯΄κ²Œ μ •μ˜ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.

 

lambda arguments: expression

 

μ—¬κΈ°μ„œ argumentsλŠ” ν•¨μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” μΈμžλ“€μ„ μ˜λ―Έν•˜κ³ , expression은 ν•΄λ‹Ή μΈμžλ“€μ„ μ‚¬μš©ν•΄ μˆ˜ν–‰λ˜λŠ” 식을 μ˜λ―Έν•©λ‹ˆλ‹€. 이 μ‹μ˜ 계산 κ²°κ³Όκ°€ lambda ν•¨μˆ˜μ˜ λ°˜ν™˜ 값이 λ©λ‹ˆλ‹€. 단, expression은 단일 μ‹λ§Œμ„ 포함할 수 있으며, 볡수의 λͺ…λ Ήμ΄λ‚˜ 쑰건문, 반볡문 등을 직접 포함할 수 μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 식 λ‚΄μ—μ„œλŠ” 쑰건뢀 ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œλ₯Ό 톡해 더 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€:

 

  1. 두 수λ₯Ό λ”ν•˜λŠ” lambda ν•¨μˆ˜:
add = lambda x, y: x + y
print(add(5, 3))
# 좜λ ₯: 8

 

 

2. 리슀트의 각 μš”μ†Œμ— 10을 κ³±ν•˜λŠ” lambda ν•¨μˆ˜:

numbers = [1, 2, 3, 4]
multiplied = list(map(lambda x: x * 10, numbers))
print(multiplied)
# 좜λ ₯: [10, 20, 30, 40]

 

lambda ν•¨μˆ˜λŠ” 특히 filter(), map(), reduce() λ“±μ˜ κ³ μ°¨ ν•¨μˆ˜μ™€ ν•¨κ»˜ μ‚¬μš©λ  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜λ“€μ€ 일반적으둜 ν•œ 개 μ΄μƒμ˜ ν•¨μˆ˜λ₯Ό 인자둜 λ°›μœΌλ©°, lambda ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œλ₯Ό 더 κ°„λ‹¨νžˆ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

lambda ν•¨μˆ˜μ˜ μ‚¬μš©μ€ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€ 수 μžˆλŠ” μž₯점이 μžˆμ§€λ§Œ, λ³΅μž‘ν•œ 둜직의 경우 가독성을 ν•΄μΉ  수 μžˆμœΌλ―€λ‘œ μ μ ˆν•œ μƒν™©μ—μ„œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

 

파이썬의 map()ν•¨μˆ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ map()ν•¨μˆ˜μ™€ λ‹€λ₯΄κ²Œ 두 개의 인자λ₯Ό λ°›λŠ”λ° 첫 번째 μΈμžλŠ” ν•¨μˆ˜μ΄κ³ , 두 번째 μΈμžλŠ” 반볡 κ°€λŠ₯ν•œ 객체(이 μ˜ˆμ œμ—μ„œλŠ” 리슀트 numbers)μž…λ‹ˆλ‹€.

 

 map() ν•¨μˆ˜μ˜ κ²°κ³ΌλŠ” map 객체이며, μ΄λŠ” λ°”λ‘œ λ¦¬μŠ€νŠΈκ°€ μ•„λ‹™λ‹ˆλ‹€. λ”°λΌμ„œ list() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ map 객체λ₯Ό 리슀트둜 λ³€ν™˜ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜μ—¬ μ΅œμ’…μ μœΌλ‘œ numbers 리슀트의 각 μš”μ†Œμ— 10을 κ³±ν•œ μƒˆλ‘œμš΄ λ¦¬μŠ€νŠΈκ°€ μƒμ„±λ©λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•