[Python] map, filter 함수
2022. 12. 7. 22:35
map 함수와 filter 함수에 대해 알아보자.
map

map 함수가 받는 인자를 보면 함수와 반복 가능한 객체이다.
map함수는 반복 가능한 객체를 받아 함수에 적용해준다.
예시 코드를 만들어보자.
li = [1, 2, 3]
a = map(lambda x : x+1, li)
print(type(a))
print(list(a))

간단한 예시를 위해 lambda함수를 사용했다.
재사용하는 함수를 따로 만든 후 적용해도 된다.
※ map함수의 출력 type은 class 이기 때문에 list로 감싼 후 출력해야 한다.
filter

filter 함수의 첫번째 인자는 함수 또는 None, 두번째 인자는 반복 가능한 객체이다.
map 함수와 비슷하게 반복 가능한 객체를 함수에 적용한다.
그 후 결과가 참일 경우 값을 반환한다.
첫번째 인자가 None일 경우, 반복 가능한 객체의 각 요소가 참인지는 판단한다.
예제 코드를 만들어보자.
li = ['가', 1, '나', 2]
def isStr(li):
if str(type(li)) == "<class 'str'>":
return True
return False
result = filter(isStr, li)
print(type(result))
print(list(result))

리스트 각 요소의 타입이 str이면 True를 반환하는 isStr함수를 만들었다.
filter의 두번째 인자가 반복 가능한 객체를 받기 때문에 isStr함수 내에서 for문을 통해 list의 각 요소를 꺼내오는 작업을 하지 않았다.
또한 map 함수와 마찬가지로
※ filter 함수의 출력 type은 class 이므로 list로 감싼 후 출력해야 한다.
filter + map
filter 함수의 두번째 인자로 map함수를 넣어보자.
li = [9.4, 9.8, 12.3]
result = list(filter(lambda x : x>=10, map(round, li)))
print(result)

filter함수의 첫번째 인자로 lambda 함수를 넣고, 두번째 인자로 map 함수를 넣었다.
map함수는 li의 각 요소를 반올림해주는 round 함수를 사용했다.
결과는 list로 반환했다.
'Python > 파이썬 중급' 카테고리의 다른 글
| [Python] sorted, sort 함수 (0) | 2022.12.11 |
|---|---|
| [Python] mutable(가변 객체), immutable(불변 객체) (0) | 2022.12.08 |
| [Python] MappingProxyType (0) | 2022.12.07 |
| [Python] 네임드 튜플 (namedtuple) (0) | 2022.12.06 |
| [Python] 매직 메소드 (0) | 2022.11.30 |