<์˜ˆ์ œ ์ถœ์ฒ˜> 

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