반응형
map()
함수와 filter()
함수
map()
함수와 filter()
함수는 파이썬에서 반복 가능한 객체의 요소들을 처리하는 데 유용한 함수형 프로그래밍 도구입니다. 각각의 특징과 사용법을 예제와 함께 살펴보겠습니다.
map()
함수
- 특징:
- 반복 가능한 객체의 각 요소에 함수를 적용한 결과를 반환합니다.
- 반환값은
map
객체로, 이를 리스트나 다른 반복 가능한 형태로 변환할 수 있습니다.
- 문법:
map(function, iterable)
- 예제:
# 리스트의 각 요소에 2를 곱하는 함수
numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled)) # 출력: [2, 4, 6, 8, 10]
- 다양한 예제:
# 문자열 리스트의 각 문자열을 대문자로 변환
strings = ["hello", "world", "python"]
uppercased = map(str.upper, strings)
print(list(uppercased)) # 출력: ['HELLO', 'WORLD', 'PYTHON']
filter()
함수
- 특징:
- 반복 가능한 객체의 각 요소에 함수를 적용하여, 함수의 반환값이
True
인 요소들만 걸러냅니다. - 반환값은
filter
객체로, 이를 리스트나 다른 반복 가능한 형태로 변환할 수 있습니다.
- 반복 가능한 객체의 각 요소에 함수를 적용하여, 함수의 반환값이
- 문법:
filter(function, iterable)
- 예제:
# 리스트에서 짝수만 필터링하는 함수
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens)) # 출력: [2, 4, 6, 8, 10]
- 다양한 예제:
# 문자열 리스트에서 길이가 5 이상인 문자열만 필터링
strings = ["hello", "world", "python", "is", "great"]
long_strings = filter(lambda s: len(s) >= 5, strings)
print(list(long_strings)) # 출력: ['hello', 'world', 'python', 'great']
map()
과 filter()
의 비교
map()
은 반복 가능한 객체의 모든 요소에 대해 함수를 적용합니다. 결과는 동일한 길이의 새로운 반복 가능한 객체입니다.filter()
는 반복 가능한 객체의 요소에 대해 함수를 적용하여 조건을 만족하는 요소들만 반환합니다. 결과는 조건을 만족하는 요소들로 구성된 새로운 반복 가능한 객체입니다.
함께 사용하기
map()
과 filter()
를 함께 사용할 수도 있습니다. 예를 들어, 리스트의 요소를 먼저 변환하고, 그중 조건을 만족하는 요소만 필터링하는 경우입니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 먼저 각 요소를 2배로 만들고, 그 중에서 짝수만 필터링
result = filter(lambda x: x % 2 == 0, map(lambda x: x * 2, numbers))
print(list(result)) # 출력: [4, 8, 12, 16, 20]
이처럼 map()
과 filter()
는 데이터를 변환하고 조건을 적용하여 필터링하는 데 매우 유용한 함수들입니다.
'실버를 위한 코딩 > 파이썬' 카테고리의 다른 글
[파이썬] 튜플(Tuple), 리스트(List)와 비교해서 (1) | 2024.07.01 |
---|---|
[파이썬] `sorted()` 함수와 `sort()` 메서드 (0) | 2024.06.28 |
[파이썬] 람다(lambda) 함수는? (0) | 2024.06.27 |
파이썬의 기본 자료형 7가지 (1) | 2024.06.11 |
[파이썬] 데시멀(Decimal) 타입 사용, 10진 소수점 연산 (0) | 2024.05.30 |