<μμ μΆμ²>
2) map, filter
μμ λ°°μ΄ μ λλ μ΄ν°(`generator`)λ μ΄ν°λ μ΄ν°(`iterator`) μ λλ€. λ€λ§ μ λλ μ΄ν° ννμ λλ `yield`ν€μλλ₯Ό ν΅ν΄ μμ±ν μ΄ν°λ μ΄ν°λ ꡬλΆμ ...
wikidocs.net
μ¬μ©λ²μ΄ μ΅μμΉ μμ νμ μ°Ύμ보λ map, filterν¨μλ₯Ό νμ€ν μ λ¦¬ν΄ λλλ€.
map(μ μ©μν¬ ν¨μ, μ μ©ν μμλ€)
: λ°λ³΅κ°λ₯ν iterable κ°μ²΄λ₯Ό λ°μμ κ° μμμ ν¨μλ₯Ό μ μ©ν΄μ£Όλ ν¨μ
#1. forλ¬Έ μ¬μ©
def add_1(n):
return n + 1
target = [1, 2, 3, 4, 5]
result = []
for value in target:
result.append(add_1(value))
print(result)
[2, 3, 4, 5, 6]
#2. mapν¨μ μ¬μ©
# map ν¨μ μ¬μ©
def add_1(n):
return n + 1
target = [1, 2, 3, 4, 5]
result = map(add_1, target)
print(result) # μΆλ ₯κ²°κ³Ό: iterator -> nextν¨μλ₯Ό μ΄μ©νμ¬ νμΈ κ°λ₯
print(list(result)) # list νμ
μΌλ‘ νλ³ν νμ¬ νμΈ κ°λ₯
<map object at 0x000001B7457EF3C8>
[2, 3, 4, 5, 6]
#3. mapν¨μ + lambda μ¬μ©
# map + lambda: add_1 κ³Ό κ°μ ν¨μκ° μ¬μ¬μ© λͺ©μ μ΄ μλ€λ©΄ lambda ν¨μ μ¬μ©
target = [1, 2, 3, 4, 5]
result = map(lambda x: x + 1, target)
print(list(result))
[2, 3, 4, 5, 6]
# μΆκ° μμ : λͺ¨λ μμλ€μ str νμ
μΌλ‘ λ³κ²½
target = [1, 2, 3, 4, 5]
list(map(str, target))
['1', '2', '3', '4', '5']
filter(μ μ©μν¬ ν¨μ, μ μ©ν μμλ€)
: νΉμ 쑰건μΌλ‘ κ±Έλ¬μ κ±Έλ¬μ§ μμλ€λ‘ iterator κ°μ²΄λ₯Ό λ§λ€μ΄μ 리ν΄
#1. forλ¬Έ μ¬μ©
target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
def is_even(n):
return True if n % 2 == 0 else False
for value in target:
if is_even(value):
result.append(value)
print(result)
#2. filter ν¨μ μ¬μ©
[2, 4, 6, 8, 10]
# filter ν¨μ μ¬μ©
target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_even(n):
return True if n % 2 == 0 else False
result = filter(is_even, target)
print(list(result))
[2, 4, 6, 8, 10]
#3. filter ν¨μ + lambda μ¬μ©
# filter + lambda
target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x%2==0, target)
print(list(result))
[2, 4, 6, 8, 10]
μμ©: Map + Filter μμ
## target리μ€νΈμ λͺ¨λ μμλ€μ 1μ λνκ³ νμλ§ return
target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(filter(lambda x: x%2!=0, map(lambda x: x+1, target)))
[3, 5, 7, 9, 11]