ν¨μν νλ‘κ·Έλλ° μ€νμΌμ pythonμμ μ€μν μν μ ν©λλ€. μ΄λ² ν¬μ€ν μμλ python ν¨μν νλ‘κ·Έλ¨μ ν΅μ¬ μμμΈ λλ€, filter, mapμ λν΄ μμλ³΄κ² μ΅λλ€.
β£ λͺ©μ°¨
λλ€, filter, mapμ λͺ¨λ ν¨μλ₯Ό μ λ¬νμ¬ ν¨μν νλ‘κ·Έλλ° μ€νμΌμ ꡬννλ λꡬμ
λλ€.
κ·Έ μ€μμ filter, map ν¨μλ ν¨μλ₯Ό 맀κ°λ³μλ‘ μ¬μ©νλ λ΄μ₯ν¨μλ‘, μ½λλ₯Ό κ°κ²°νκ³ κ°λ μ± μκ² λ§λ€μ΄ μ€λλ€.
μ΄λ¬ν ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ νμ΄μ¬ μ½λλ₯Ό ν¨μ¨μ μΌλ‘ μμ±νκ³ λ°λ³΅μ μΈ μμ μ μ€μ¬ μ μ§λ³΄μλ₯Ό μ½κ² λ§λ€μ΄μ€λλ€.
1. ν¨μν νλ‘κ·Έλλ°μ΄λ?π§
ν¨μν νλ‘κ·Έλλ°μ μμ¦ μννΈμ¨μ΄ κ°λ°μμ μ€μν ν¨λ¬λ€μ μ€ νλμ λλ€.
μ΄ ν¨λ¬λ€μμ ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬νλ μ½λλ₯Ό μμ£Ό μ¬μ©νμ¬, μ½λμ κ°λ μ±μ ν₯μμν΅λλ€.
νμ΄μ¬μ μ΄λ¬ν ν¨μν νλ‘κ·Έλλ°μ μ§μνμ¬ λλ€, filter, mapκ³Ό κ°μ κ³ μ°¨ ν¨μλ₯Ό νμ©ν μ μμ΅λλ€.
μ΄λ² κΈμμλ νμ΄μ¬μμ ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ νμ©ν λλ€, filter, mapμ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
2. λλ€ ν¨μπ«
λλ€ ν¨μλ ν μ€λ‘ ννλλ μ΄λ¦μ΄ μλ μ΅λͺ ν¨μλ‘, κ°λ¨ν μ°μ°μ μννλ λ° μ¬μ©λ©λλ€.
μ΄ ν¨μλ λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬λκ±°λ ν¨μμ λ°ν κ°μΌλ‘ μ¬μ©λ©λλ€.
κΈ°λ³Έ ννλ lambda 맀κ°λ³μ : 리ν΄κ°μ λλ€.
μλ₯Ό λ€μ΄, 리μ€νΈμ μμλ₯Ό μ κ³±νλ ν¨μλ₯Ό λλ€ ν¨μλ‘ ννν μ μμ΅λλ€.
# λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ λ¦¬μ€νΈμ κ° μμλ₯Ό μ κ³±νλ μμ
# μ
λ ₯ 리μ€νΈ
numbers = [1, 2, 3, 4, 5]
# λλ€ ν¨μλ₯Ό μ¬μ©νμ¬ κ° μμλ₯Ό μ κ³±νλ ν¨μ μ μ
square = lambda x: x ** 2
# λλ€ ν¨μλ₯Ό 리μ€νΈμ κ° μμμ μ μ©νμ¬ μλ‘μ΄ λ¦¬μ€νΈ μμ±
squared_numbers = [square(num) for num in numbers]
# κ²°κ³Ό μΆλ ₯
print(squared_numbers) # μΆλ ₯: [1, 4, 9, 16, 25]
- numbers = [1, 2, 3, 4, 5]: λ¨Όμ , μ λ ₯μΌλ‘ μ¬μ©ν 리μ€νΈ numbersλ₯Ό μ μν©λλ€. μ΄ λ¦¬μ€νΈλ [1, 2, 3, 4, 5]λ‘ μ΄κΈ°νλ©λλ€.
- square = lambda x: x ** 2: λ€μμΌλ‘, λλ€ ν¨μλ₯Ό μ μν©λλ€. μ¬κΈ°μλ lambda ν€μλλ₯Ό μ¬μ©νμ¬ κ° μμλ₯Ό μ κ³±νλ ν¨μλ₯Ό μ μν©λλ€. 맀κ°λ³μ xλ₯Ό λ°μμ xμ μ κ³±μ λ°ννλ ν¨μμ λλ€.
- squared_numbers = [square(num) for num in numbers]: 리μ€νΈ μ»΄ν리ν¨μ μ μ¬μ©νμ¬ μλ‘μ΄ λ¦¬μ€νΈλ₯Ό μμ±ν©λλ€. μ΄ λΆλΆμ 리μ€νΈ μ»΄ν리ν¨μ μ ꡬ문μ λλ€. 리μ€νΈ μ»΄ν리ν¨μ μ λκ΄νΈ μμ ννμκ³Ό λ°λ³΅λ¬Έμ μ¬μ©νμ¬ λ¦¬μ€νΈλ₯Ό μμ±νλ ꡬ문μ λλ€. μ¬κΈ°μλ κ° numμ square ν¨μμ μ μ©νμ¬ μλ‘μ΄ λ¦¬μ€νΈμΈ squared_numbersλ₯Ό μμ±ν©λλ€.
- print(squared_numbers): μ΅μ’ μ μΌλ‘ μ κ³±λ μ«μλ€λ‘ μ΄λ£¨μ΄μ§ 리μ€νΈλ₯Ό μΆλ ₯ν©λλ€.
π μ¬κΈ°μ μ κΉ!
리μ€νΈ μ»΄ν리ν¨μ μ΄λ?
νμ΄μ¬μμ 리μ€νΈ μ»΄ν리ν¨μ μ΄λ 리μ€νΈλ₯Ό μμ±νλ κ°κ²°νκ³ ν¨μ¨μ μΈ λ°©λ² μ€ νλμ λλ€. 리μ€νΈ μ»΄ν리ν¨μ μ λ°λ³΅λ¬Έκ³Ό 쑰건문μ μ¬μ©νμ¬ λ¦¬μ€νΈλ₯Ό μμ±νλ ν μ€μ§λ¦¬ ννμμ λλ€.
μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ ꡬ쑰λ₯Ό κ°μ§λλ€.
[ννμ for νλͺ© in iterable if 쑰건]
- ννμ : κ° νλͺ©μ λν κ³μ°μ΄λ λ³νμ λνλ΄λ ννμ
- νλͺ© : λ°λ³΅ν μμ, iterableμ λ°λ³΅ κ°λ₯ν κ°μ²΄
- if 쑰건 : νμν κ²½μ° μ νμ μΌλ‘ μ¬μ©λλ 쑰건. μ΄ μ‘°κ±΄μ λ§μ‘±νλ νλͺ©λ§ ν¬ν¨
3. filter ν¨μμ νμ©π₯
filter ν¨μλ μ£Όμ΄μ§ ν¨μλ‘λΆν° Trueλ₯Ό λ°ννλ μμλ€λ§ μ ννμ¬ μλ‘μ΄ λ¦¬μ€νΈλ₯Ό λ§λλλ€. μ΄λ₯Ό ν΅ν΄ 리μ€νΈμ μμλ₯Ό 쑰건μ λ§κ² νν°λ§ν μ μμ΅λλ€. κΈ°λ³Έμ μΈ ννλ fillter(ν¨μ, λ°λ³΅ κ°λ₯ν κ°μ²΄)μ λλ€. μλ₯Ό λ€μ΄, μ£Όμ΄μ§ 리μ€νΈμμ μ§μλ§ νν°λ§νλ ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
# μ§μλ₯Ό νλ³νλ ν¨μ μ μ
def is_even(num):
return num % 2 == 0
# μ
λ ₯ 리μ€νΈ
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# filter ν¨μλ₯Ό μ¬μ©νμ¬ μ§μλ₯Ό νν°λ§νμ¬ μλ‘μ΄ λ¦¬μ€νΈ μμ±
even_numbers = list(filter(is_even, numbers))
# κ²°κ³Ό μΆλ ₯
print(even_numbers) # μΆλ ₯: [2, 4, 6, 8, 10]
- def is_even(num):: λ¨Όμ , μ§μλ₯Ό νλ³νλ ν¨μ is_evenμ μ μν©λλ€. μ΄ ν¨μλ 맀κ°λ³μ numμ΄ μ§μμΈμ§ νλ³νμ¬ True λλ Falseλ₯Ό λ°νν©λλ€.
- numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: μ λ ₯μΌλ‘ μ¬μ©ν 리μ€νΈ numbersλ₯Ό μ μν©λλ€. μ΄ λ¦¬μ€νΈλ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]μΌλ‘ μ΄κΈ°νλ©λλ€.
- even_numbers = list(filter(is_even, numbers)): filter() ν¨μλ₯Ό μ¬μ©νμ¬ μ£Όμ΄μ§ 리μ€νΈμμ μ§μλ₯Ό νν°λ§νμ¬ μλ‘μ΄ λ¦¬μ€νΈλ₯Ό μμ±ν©λλ€. filter() ν¨μλ 첫 λ²μ§Έ μΈμλ‘ ν¨μλ₯Ό, λ λ²μ§Έ μΈμλ‘ λ°λ³΅ κ°λ₯ν(iterable) κ°μ²΄λ₯Ό λ°μ΅λλ€. μ΄ ν¨μλ λ λ²μ§Έ μΈμλ‘ λ°μ κ° μμμ 첫 λ²μ§Έ μΈμλ‘ λ°μ ν¨μλ₯Ό μ μ©νμ¬ μ‘°κ±΄μ λ§μ‘±νλ μμλ§ λ°νν©λλ€.
- print(even_numbers): μ΅μ’ μ μΌλ‘ νν°λ§λ μ§μλ€λ‘ μ΄λ£¨μ΄μ§ 리μ€νΈλ₯Ό μΆλ ₯ν©λλ€.
4. map ν¨μμ νμ©π©
map ν¨μλ μ£Όμ΄μ§ ν¨μλ₯Ό μνμ€(리μ€νΈ, νν λ±)μ κ° μμμ μ μ©νμ¬ μλ‘μ΄ μνμ€λ₯Ό μμ±ν©λλ€. μ΄λ₯Ό ν΅ν΄ μνμ€μ λͺ¨λ μμμ λμΌν μ°μ°μ μ μ©ν μ μμ΅λλ€. κΈ°λ³Έμ μΈ ννλ map(ν¨μ, λ°λ³΅ κ°λ₯ν κ°μ²΄)μ λλ€. μλ₯Ό λ€μ΄ μ£Όμ΄μ§ κ° μμλ₯Ό μ κ³±νλ ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
# κ° μ«μλ₯Ό μ κ³±νλ ν¨μ μ μ
def square(num):
return num ** 2
# μ
λ ₯ 리μ€νΈ
numbers = [1, 2, 3, 4, 5]
# map ν¨μλ₯Ό μ¬μ©νμ¬ κ° μ«μμ μ κ³± ν¨μλ₯Ό μ μ©νμ¬ μλ‘μ΄ λ¦¬μ€νΈ μμ±
squared = list(map(square, numbers))
# κ²°κ³Ό μΆλ ₯
print(squared) # μΆλ ₯: [1, 4, 9, 16, 25]
- def square(num)::λ¨Όμ ,κ° μ«μλ₯Ό μ κ³±νλ ν¨μ squareμ μ μν©λλ€. μ΄ ν¨μλ 맀κ°λ³μ numμ λ°μμ numμ μ κ³±μ λ°νν©λλ€.
- numbers = [1, 2, 3, 4, 5]: μ λ ₯μΌλ‘ μ¬μ©ν 리μ€νΈ numbersλ₯Ό μ μν©λλ€. μ΄ λ¦¬μ€νΈλ [1, 2, 3, 4, 5]λ‘ μ΄κΈ°νλ©λλ€.
- squared = list(map(square, numbers)): map() ν¨μλ₯Ό μ¬μ©νμ¬ κ° μ«μμ μ κ³± ν¨μλ₯Ό μ μ©νμ¬ μλ‘μ΄ λ¦¬μ€νΈλ₯Ό μμ±ν©λλ€. map() ν¨μλ 첫 λ²μ§Έ μΈμλ‘ ν¨μλ₯Ό, λ λ²μ§Έ μΈμλ‘ λ°λ³΅ κ°λ₯ν(iterable) κ°μ²΄λ₯Ό λ°μ΅λλ€. μ΄ ν¨μλ λ λ²μ§Έ μΈμλ‘ λ°μ κ° μμμ 첫 λ²μ§Έ μΈμλ‘ λ°μ ν¨μλ₯Ό μ μ©νμ¬ μλ‘μ΄ κ°μ μμ±ν©λλ€.
- print(squared): μ΅μ’ μ μΌλ‘ μ κ³±λ μ«μλ€λ‘ μ΄λ£¨μ΄μ§ 리μ€νΈλ₯Ό μΆλ ₯ν©λλ€.
리μ€νΈμ ννμ κ΄ν λ΄μ©μ΄ κΆκΈνμλ€λ©΄ μ§λ ν¬μ€ν μ νμΈν΄ μ£ΌμΈμπ
[νμ΄μ¬]리μ€νΈ(list)μ νν(tuple)
λͺ©μ°¨ 1. 컬λ μ μλ£νμ΄λ 2. list 3. tuple 4. listμ tuple λΉκ΅ 5. ν΅μ¬λ΄μ© μ§λ μκ°μλ κΈ°λ³Έ μλ£νμ λν΄ μμ보μλλ°μ! μ€λμ νμ΄μ¬ 컬λ μ μλ£ν μ€ λ¦¬μ€νΈ(list)μ νν(tuple)μ λν΄ μμ
creativevista.tistory.com