Menu
Coddy logo textTech

Filter 함수

Coddy Python 여정의 Logic & Flow 섹션에 포함된 레슨. 78개 중 73번째.

filter() 함수는 두 가지 주요 항목을 받습니다:

  1. 함수 (각 항목을 검사하기 위한 지침이 포함됨)
  2. 항목의 시퀀스 (리스트 또는 요소들의 컬렉션)

시퀀스의 각 항목을 하나씩 확인하고, 함수의 테스트를 통과한 항목(함수가 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. 숫자 1이 들어감 → is_even이 False를 반환함 → 숫자 걸러냄
  2. 숫자 2가 들어감 → is_even이 True를 반환함 → 숫자 유지함
  1. 숫자 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"]
challenge icon

챌린지

쉬움

문자열 리스트 strings를 인자로 받는 get_long_strings라는 함수를 작성하세요. 이 함수는 filter() 함수와 람다 함수를 사용하여 길이가 5보다 큰 문자열을 선택해야 합니다. 이 함수는 선택된 문자열이 포함된 리스트를 반환해야 합니다.

직접 해보기

def get_long_strings(strings):
    # filter()와 lambda 함수를 사용하여 길이가 5보다 큰 문자열을 선택하세요
    # 아래의 빈 리스트를 해당 표현식으로 바꾸세요
    long_strings = []
    
    # 선택된 문자열의 리스트를 반환하세요
    return list(long_strings)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러