<예제 좜처> 

https://wikidocs.net/22803

 

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]

 

+ Recent posts