728x90
728x90
목 차
1. filter() 함수란?
- 파이썬의 filter() 함수는 반복 가능한(iterable) 객체의 각 요소에 대해 지정된 조건을 검사하고, 그 조건을 만족하는 요소들만 걸러내는 함수입니다.
- filter() 함수는 함수형 프로그래밍에서 자주 사용되며, 특히 리스트, 튜플 등 반복 가능한 객체에서 특정 조건을 만족하는 값만 추출할 때 유용합니다.
2. 기본 문법
- function: 각 요소에 대해 적용할 필터링 함수입니다. 이 함수는 True 또는 False를 반환해야 합니다.
- iterable: 리스트, 튜플, 문자열 등 반복 가능한 객체입니다.
filter(function, iterable)
2-1. 기본 사용 예제
# 짝수를 필터링하는 함수
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
# 결과를 리스트로 변환하여 출력
print(list(even_numbers)) # 출력: [2, 4, 6]
2-2. 주요 특징
- 필터링 조건으로 사용되는 함수는 각 요소에 대해 True 또는 False를 반환해야 합니다.
- 조건을 만족하지 않는 요소는 걸러집니다.
- filter()는 지연 평가를 사용하여 효율성을 높입니다.
- map()과 마찬가지로 filter 객체도 지연 평가(lazy evaluation)를 사용하므로, 결과를 보기 위해서는 이를 리스트나 다른 반복 가능한 객체로 변환해야 합니다.
2-3. filter()와 for 루프의 비교
- filter() 함수를 사용해 짝수인 요소를 새로운 리스트로 생성
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # 출력: [2, 4, 6]
- for문을 사용해 짝수인 요소만 새로운 리스트로 생성
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
print(even_numbers) # 출력: [2, 4, 6]
3. 활용 예제
3-1. 문자열에서 특정 문자 포함 여부로 필터링
# 'a'를 포함하는 문자열만 필터링
words = ['apple', 'banana', 'cherry', 'date']
a_words = filter(lambda word: 'a' in word, words)
# 결과를 리스트로 변환하여 출력
print(list(a_words)) # 출력: ['apple', 'banana', 'date']
3-2. 정의된 함수 사용
# 5보다 큰 수를 필터링하는 함수 정의
def greater_than_five(x):
return x > 5
numbers = [3, 7, 2, 9, 4]
filtered_numbers = filter(greater_than_five, numbers)
print(list(filtered_numbers)) # 출력: [7, 9]
3-3. 숫자 리스트에서 양수 필터링
numbers = [-1, 0, 2, -3, 5, 7, -8]
positive_numbers = filter(lambda x: x > 0, numbers)
print(list(positive_numbers)) # 출력: [2, 5, 7]
3-4. 문자열에서 대문자 필터링
text = "Hello World!"
uppercase_letters = filter(lambda x: x.isupper(), text)
print(''.join(uppercase_letters)) # 출력: 'HW'
3-5. None 값 필터링
- None을 필터링 함수로 사용하면, 자동으로 False로 평가되는 요소(None, 빈 문자열, 0 등)를 제거할 수 있습니다.
items = [0, 1, '', None, 'apple', [], 'banana']
non_none_items = filter(None, items)
print(list(non_none_items)) # 출력: [1, 'apple', 'banana']
4. 마무리
- filter() 함수는 반복 가능한 객체에서 특정 조건을 만족하는 요소들만 걸러내는 데 유용합니다. 특히 조건에 맞는 데이터를 효율적으로 추출하거나 필터링할 때 매우 편리하며, 코드가 간결해집니다. 함수형 프로그래밍을 선호할 경우 filter()는 매우 유용한 도구입니다.
관련글
728x90
'프로그래밍 > [Python] 파이썬' 카테고리의 다른 글
[Python] 파이썬의 주요 내장 예외 클래스를 정리 (try/except문) (0) | 2024.10.28 |
---|---|
[Python] reduce() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.27 |
[Python] map() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.25 |
[Python] lambda 함수 이해하기 - 파이썬 문법 (0) | 2024.10.24 |
[Python] sorted() 함수와 sort() 메서드 차이점 (0) | 2024.10.23 |