728x90

Lambda ν•¨μˆ˜λž€ 무엇인가?

Lambda ν•¨μˆ˜λŠ” 읡λͺ… ν•¨μˆ˜(anonymous function)λ₯Ό μƒμ„±ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν•¨μˆ˜λŠ” λ³€μˆ˜μ— λŒ€μž…ν•˜μ—¬ ν•¨μˆ˜λ₯Ό μ €μž₯ν•˜κ±°λ‚˜, 인자(argument)둜 λ‹€λ₯Έ ν•¨μˆ˜μ— μ „λ‹¬ν•˜κ±°λ‚˜, λ°˜ν™˜κ°’μœΌλ‘œ λ‹€λ₯Έ ν•¨μˆ˜μ—μ„œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

Lambda ν•¨μˆ˜λŠ” κ°„λ‹¨ν•œ κΈ°λŠ₯을 κ°€μ§€κ³  있으며, 일반적으둜 ν•œ 쀄 μ•ˆμ— μ •μ˜λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŠΉμ§• λ•Œλ¬Έμ—, Lambda ν•¨μˆ˜λŠ” νŠΉλ³„ν•œ ꡬ문을 μ‚¬μš©ν•˜μ—¬ μƒμ„±λ©λ‹ˆλ‹€.

Lambda ν•¨μˆ˜μ˜ ꡬ문

Lambda ν•¨μˆ˜μ˜ ꡬ문은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

lambda arguments: expression

μ—¬κΈ°μ„œ argumentsλŠ” ν•¨μˆ˜μ— 전달될 인자(argument)λ“€μ˜ λͺ©λ‘μž…λ‹ˆλ‹€. expression은 인자λ₯Ό μ΄μš©ν•˜μ—¬ 계산할 ν‘œν˜„μ‹μž…λ‹ˆλ‹€.

λ‹€μŒμ€ κ°„λ‹¨ν•œ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

# λ”ν•˜κΈ° ν•¨μˆ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
def add(x, y):
    return x + y

# Lambda ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λ”ν•˜κΈ° ν•¨μˆ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
add_lambda = lambda x, y: x + y

# ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
print(add(2, 3))            # 좜λ ₯: 5
print(add_lambda(2, 3))     # 좜λ ₯: 5

μœ„μ˜ μ½”λ“œμ—μ„œ, add_lambdaλŠ” lambda ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ”ν•˜κΈ° ν•¨μˆ˜λ₯Ό μ •μ˜ν•œ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

Lambda ν•¨μˆ˜μ˜ ν™œμš©

Lambda ν•¨μˆ˜λŠ” 주둜 λ‹€λ₯Έ ν•¨μˆ˜λ“€μ˜ 인자둜 μ „λ‹¬λ˜κ±°λ‚˜, λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, sorted() ν•¨μˆ˜λŠ” 리슀트λ₯Ό μ •λ ¬ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” key 인자λ₯Ό μ‚¬μš©ν•˜μ—¬ 리슀트의 각 μš”μ†Œμ— λŒ€ν•œ μ •λ ¬ 기쀀을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. key 인자둜 Lambda ν•¨μˆ˜λ₯Ό μ „λ‹¬ν•˜μ—¬ 리슀트λ₯Ό μ •λ ¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# λ¬Έμžμ—΄μ˜ 길이λ₯Ό κΈ°μ€€μœΌλ‘œ 리슀트λ₯Ό μ •λ ¬ν•©λ‹ˆλ‹€.
words = ['apple', 'banana', 'cherry', 'durian']
sorted_words = sorted(words, key=lambda x: len(x))

print(sorted_words)    # 좜λ ₯: ['apple', 'cherry', 'banana', 'durian']

μœ„μ˜ μ½”λ“œμ—μ„œ, key 인자둜 μ „λ‹¬λœ Lambda ν•¨μˆ˜λŠ” λ¬Έμžμ—΄μ˜ 길이λ₯Ό κ³„μ‚°ν•˜μ—¬ μ •λ ¬ κΈ°μ€€μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

Lambda ν•¨μˆ˜λŠ” λ˜ν•œ map() ν•¨μˆ˜, filter() ν•¨μˆ˜ λ“±κ³Ό ν•¨κ»˜ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν•¨μˆ˜λ“€μ€ μ‹œν€€μŠ€ 데이터에 λŒ€ν•œ 처리λ₯Ό μ‰½κ²Œ ν•  수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€.

# 리슀트의 각 μš”μ†Œλ₯Ό μ œκ³±ν•˜μ—¬ μƒˆλ‘œμš΄ 리슀트λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))

print(squared_numbers)    # 좜λ ₯: [1, 4, 9, 16, 25]
λ°˜μ‘ν˜•
λ‹€ν–ˆλ‹€