Filter 함수
Coddy Python 여정의 Logic & Flow 섹션에 포함된 레슨. 78개 중 73번째.
filter() 함수는 두 가지 주요 항목을 받습니다:
- 함수 (각 항목을 검사하기 위한 지침이 포함됨)
- 항목의 시퀀스 (리스트 또는 요소들의 컬렉션)
시퀀스의 각 항목을 하나씩 확인하고, 함수의 테스트를 통과한 항목(함수가 True를 반환할 때)만 유지합니다.
예를 들어:
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6] # 이것은 그냥 숫자 리스트입니다
even_numbers = filter(is_even, numbers)
print(list(even_numbers))
# 출력: [2, 4, 6]여기서 일어난 일:
- 숫자 리스트가 있습니다: [1, 2, 3, 4, 5, 6]
- `filter` 함수는 한 번에 하나씩 각 숫자를 가져옵니다.
- 각 숫자를 `is_even` 함수에 전달합니다.
- function이 True를 반환하면, that 숫자를 유지합니다
- function이 False를 반환하면, that 숫자를 버립니다
이것은 거름망과 같다고 생각할 수 있습니다:
- 숫자 1이 들어감 →
is_even이 False를 반환함 → 숫자 걸러냄 - 숫자 2가 들어감 →
is_even이 True를 반환함 → 숫자 유지함
- 숫자 3이 입력됨 →
is_even이 False를 반환함 → 숫자가 제외됨... 그리고 계속 진행됩니다.
별도의 함수를 정의하는 대신 람다(lambda)라고 불리는 간단한 한 줄 함수를 사용할 수도 있습니다:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda n: n % 2 == 0, numbers)
print(list(even_numbers))
# 출력: [2, 4, 6]`filter` `function`는 숫자뿐만 아니라 모든 항목 컬렉션에서 작동합니다. 다음은 `strings`를 사용한 예시입니다:
words = ["apple", "banana", "cherry", "date"]
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words))
# Output: ["banana", "cherry"]챌린지
쉬움문자열 리스트 strings를 인자로 받는 get_long_strings라는 함수를 작성하세요. 이 함수는 filter() 함수와 람다 함수를 사용하여 길이가 5보다 큰 문자열을 선택해야 합니다. 이 함수는 선택된 문자열이 포함된 리스트를 반환해야 합니다.
직접 해보기
def get_long_strings(strings):
# filter()와 lambda 함수를 사용하여 길이가 5보다 큰 문자열을 선택하세요
# 아래의 빈 리스트를 해당 표현식으로 바꾸세요
long_strings = []
# 선택된 문자열의 리스트를 반환하세요
return list(long_strings)이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Logic & Flow의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러