νμ΄μ¬ λ§μ€ν°νκΈ° : λλ€(Lambda) ν¨μ
μλ³Έ κ²μκΈ: https://velog.io/@euisuk-chung/νμ΄μ¬-μκ°ν-λ§μ€ν°νκΈ°-λλ€Lambda-ν¨μ
λλ€(lambda) ν¨μ
λ ν¨μν νλ‘κ·Έλλ°μμ μ€μν κ°λ
μ€ νλλ‘, μ΅λͺ
ν¨μ(anonymous function)λΌκ³ λ λΆλ¦
λλ€. λλ€ ν¨μλ μ΄λ¦μ΄ μλ ν¨μλ‘, μΌλ°μ μΌλ‘ ν¨μλ₯Ό ν λ²λ§ μ¬μ©νκ±°λ ν¨μλ₯Ό μΈμλ‘ μ λ¬ν΄μΌ νλ κ²½μ°μ λ§€μ° μ μ©νκ² μ¬μ©λ©λλ€.
μ΄λ² λΈλ‘κ·Έμμλ Pythonμμ λλ€ ν¨μμ κ°λ κ³Ό νμ© μμ μ λν΄ λ€λ£¨μ΄λ³΄κ² μ΅λλ€.
λλ€(lambda) ν¨μλ?
λλ€ ν¨μλ λ€μκ³Ό κ°μ ννλ‘ μ μλ©λλ€.
1
lambda μΈμ : ννμ
λλ€ ν¨μλ def
ν€μλλ₯Ό μ¬μ©νμ¬ ν¨μλ₯Ό μ μνλ κ²λ³΄λ€ κ°κ²°νκ³ κ°νΈν λ°©μμΌλ‘ ν¨μλ₯Ό μ μν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ ν¨μκ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
def add(x, y):
return x + y
μ΄ ν¨μλ₯Ό λλ€ ν¨μλ‘ λ°κΎΈλ©΄ λ€μκ³Ό κ°μ΄ μμ±ν μ μμ΅λλ€.
1
add = lambda x, y: x + y
μ΄μ add
λ³μλ λλ€ ν¨μλ₯Ό μ°Έμ‘°ν©λλ€.
λλ€(lambda) ν¨μμ νμ© μμ
1. map() ν¨μμ ν¨κ» μ¬μ©νκΈ°
map()
ν¨μλ μνμ€(리μ€νΈ, νν λ±)μ λͺ¨λ μμμ ν¨μλ₯Ό μ μ©ν κ²°κ³Όλ₯Ό λ°νν©λλ€. μ΄ λ, map()
ν¨μμ ν¨κ» λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ² μμ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ 리μ€νΈκ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
mylist = [1, 2, 3, 4, 5]
μ΄ λ¦¬μ€νΈμ κ° μμμ 2λ₯Ό κ³±νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ map()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
mylist2 = list(map(lambda x: x * 2, mylist))
print(mylist2)
μ μ½λλ map()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ mylist
리μ€νΈμ κ° μμμ 2λ₯Ό κ³±ν κ²°κ³Όλ₯Ό mylist2
리μ€νΈμ μ μ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
[2, 4, 6, 8, 10]
2. filter() ν¨μμ ν¨κ» μ¬μ©νκΈ°
filter()
ν¨μλ μνμ€(리μ€νΈ, νν λ±)μ λͺ¨λ μμ μ€μμ 쑰건μ λ§λ μμλ§μ λ°νν©λλ€. μ΄ λ, filter()
ν¨μμ ν¨κ» λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ² μμ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ 리μ€νΈκ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
mylist = [1, 2, 3, 4, 5]
μ΄ λ¦¬μ€νΈμμ νμλ§ μΆμΆνκ³ μΆλ€λ©΄, λ€μκ³Ό κ°μ΄ filter()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ νμλ§μ μΆμΆν μ μμ΅λλ€.
1
2
mylist2 = list(filter(lambda x: x % 2 == 1, mylist))
print(mylist2)
μ μ½λλ filter()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ mylist
리μ€νΈμ μμ μ€μμ νμλ§μ μΆμΆνμ¬ mylist2
리μ€νΈμ μ μ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
[1, 3, 5]
3. sorted() ν¨μμ ν¨κ» μ¬μ©νκΈ°
sorted()
ν¨μλ μνμ€(리μ€νΈ, νν λ±)μ μμλ₯Ό μ λ ¬ν κ²°κ³Όλ₯Ό λ°νν©λλ€. μ΄ λ, sorted()
ν¨μμ ν¨κ» λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ μ λ ¬ κΈ°μ€μ μ§μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ 리μ€νΈκ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
mylist = ['apple', 'banana', 'cherry']
μ΄ λ¦¬μ€νΈλ₯Ό κΈΈμ΄ μμΌλ‘ μ λ ¬νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ sorted()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
mylist2 = sorted(mylist, key=lambda x: len(x))
print(mylist2)
μ μ½λλ sorted()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ mylist
리μ€νΈμ μμλ₯Ό κΈΈμ΄ μμΌλ‘ μ λ ¬ν κ²°κ³Όλ₯Ό mylist2
리μ€νΈμ μ μ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
['apple', 'cherry', 'banana']
4. reduce() ν¨μμ ν¨κ» μ¬μ©νκΈ°
reduce()
ν¨μλ μνμ€(리μ€νΈ, νν λ±)μ λͺ¨λ μμλ₯Ό λμ μ μΌλ‘ κ³μ°ν κ²°κ³Όλ₯Ό λ°νν©λλ€. μ΄ λ, reduce()
ν¨μμ ν¨κ» λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ κ³μ° λ°©μμ μ§μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ 리μ€νΈκ° μλ€κ³ κ°μ ν΄λ΄
μλ€.
1
2
3
from functools import reduce
mylist = [1, 2, 3, 4, 5]
μ΄ λ¦¬μ€νΈμ λͺ¨λ μμλ₯Ό κ³±νκ³ μ νλ€λ©΄ λ€μκ³Ό κ°μ΄ reduce()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
1
2
result = reduce(lambda x, y: x * y, mylist)
print(result)
μ μ½λλ reduce()
ν¨μμ λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ mylist
리μ€νΈμ λͺ¨λ μμλ₯Ό κ³±ν κ²°κ³Όλ₯Ό result
λ³μμ μ μ₯ν©λλ€. μΆλ ₯ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
1
>>> 120
κ²°λ‘
μ μμ λ₯Ό ν΅ν΄ Pythonμμ λλ€ ν¨μκ° μ΄λ»κ² μ¬μ©λλμ§μ λν΄ μ΄ν΄λ³΄μμ΅λλ€. λλ€ ν¨μλ ν¨μν νλ‘κ·Έλλ°μμ μ€μν κ°λ μ€ νλμ΄λ―λ‘, ν¨μν νλ‘κ·Έλλ°μ 곡λΆνμλ λΆλ€μ λλ€ ν¨μλ₯Ό κΌ μ΅νλμκΈ°λ₯Ό μΆμ²λ립λλ€.