출처 : 윤성우의 열혈 파이썬 : 중급
07. map & filter
map
def pow(n)
return n ** 2
st1 = [1, 2, 3]
st2 = [pow(st1[0]), pow(st1[1]), pow(st1h[2])]
print(st2) # [1, 4, 9]
st1 = [1, 2, 3]
st2 = list(map(pow, st1))
print(st2) # [1, 4, 9]
- map 함수는 st1에 저장된 값들을 하나씩 전달하면서 pow 함수를 호출해준다
- 이 때 map의 두 번째 전달 대상은 iterable 객체여야 한다
- map은 iterator 객체 하나를 반환한다
def pow(n)
return n ** 2
st = [1, 2, 3]
ir = map(pow, st)
for i in ir:
print(i, end = ' ') # 1 4 9
def dbl(e):
return e * 2
list(map(dbl, (1, 3, 4))) # [2, 6, 8]
list(map(dbl, 'hello')) # ['hh', 'ee', 'll', 'll', 'oo']
- iterable 객체이면 무엇이든 전달 가능
def sum(n1, n2):
return n1 + n2
st1 = [1, 2, 3]
st2 = [3, 2, 1]
st3 = list(map(sum, st1, st2))
print(st3) # [4, 4, 4]
- sum은 매개변수가 둘이므로 map은 두 개의 iterable 객체를 요구한다
map과 람다
def rev(s):
return s[::-1]
st = ['one', 'two', 'three']
rst = list(map(rev, st))
print(rst) # ['eno', 'owt', 'eerht']
rst = list(map(lambda s: s[::-1], st))
print(rst) # 동일
filter
def is_odd(n):
return n % 2
st = [1, 2, 3, 4, 5]
ost = list(filter(is_odd, st))
print(ost) # [1, 3, 5]
- filter 함수의 첫 번째 인자는 True 또는 False를 반환하는 함수이어야 한다
- 두 번째 인자는 값을 저장하고 있는 iterable 객체이어야 한다
filter & lambda
st = [1, 2, 3, 4, 5]
ost = list(filter(lambda: n % 2, st))
print(ost) # [1, 3, 5]
st = list(range(1, 11))
fst = list(filter(lambda n: not(n % 3), st))
print(fst) # [3, 6, 9]
st = list(range(1, 11))
fst = list(filter(lambda n: not(n % 3), map(lambda n: n**2, st)))
print(fst) # [9, 36, 81]
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 10. generator 표현식 (0) | 2020.12.15 |
---|---|
[윤성우의 열혈 파이썬 중급편] 09. generator 함수 (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 06. 객체처럼 다뤄지는 함수 그리고 람다 (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 05. Iterable 객체와 Iterator 객체 (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 04. list comprehension (0) | 2020.12.15 |