Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Today
Yesterday

Total
04-28 16:35
관리 메뉴

Hey Tech

[파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식) 본문

SW 개발/Python

[파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식)

Tony Park 2021. 2. 25. 10:54
728x90
반응형

오늘은 filter 함수에 대해 알아보겠습니다. 지난 포스팅에서는 람다(lambda) 표현식에 대해 알아보았습니다.

filter 함수 함수는 람다 표현식과 함께 사용하시면 코드를 더욱 간결하고 직관적으로 작성하실 수 있습니다.

람다 표현식에 대한 포스팅은 아래 링크를 참고해 주세요!

heytech.tistory.com/17

 

filter 함수란?

filter 함수는 단어 의미 그대로 *반복 가능한 객체에서 특정 조건에 참인 요소에만 연산을 수행하는 함수입니다.

*반복 가능한 객체(iterable object)란? 말 그대로 반복이 가능한 객체로서 요소가 하나의 객체에 여러 개가 들어있고, 한 번에 하나의 요소씩 사용할 수 있는 객체를 말합니다. 대표적으로는 문자열(string), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있습니다.

 

filter 함수는 map 함수

와 사용 방법은 같으나 함수의 결괏값이 참인지 거짓인지에 따라 해당 요소를 연산에 포함시킬지 결정합니다.

연습 문제

Q2. 리스트에 1부터 20까지의 정수가 담겼을 때 홀수만 따로 리스트에 저장하여 출력하는 코드를 작성하시오.

위와 같은 문제를 filter 함수를 활용하여 풀어보도록 하겠습니다.

(1)  filter 함수를 사용하지 않은 코드

# 입력된 값이 홀수인지 확인하는 함수
def IsOdd(n):
    return True if n % 2 != 0 else False
        
target = list(range(1, 21))
result = []
for value in target:
    if IsOdd(value):
        result.append(value)
print(result) # 실행 결과: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

입력 값이 홀수인지 판정하는 함수를 작성하고 반복문을 통해 리스트 내 요소별로 연산을 수행하도록 코드를 작성하였습니다.

 

(2)  filter 함수를 사용한 코드

# 입력된 값이 홀수인지 확인하는 함수
def IsOdd(n):
    return True if n % 2 != 0 else False
        
target = list(range(1, 21))
result = list(filter(IsOdd, target))
print(result) # 실행 결과: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

filter 함수를 통해 리스트 내에서 홀수에 해당하는 요소만 선별하고, 선별된 요소를 리스트 형태로 데이터 타입을 초기화하였습니다.

 

(3)  filter 함수와 람다 표현식을 사용한 코드

target = list(range(1, 21))
result = list(filter(lambda n:n%2 != 0, target))
print(result) # 실행 결과: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

filter 함수와 lambda 표현식을 활용하면 위와 같이 코드를 더욱 간결하고 직관적으로 작성하실 수 있습니다.

 

참고할 만한 포스팅

1.   [파이썬] lambda 함수는 언제, 어떻게 쓸까?
2.  [파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식)
3.  [파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식)
4.  [파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식)

포스팅 내용에 오류가 있는 부분이 있을 경우 댓글을 남겨 주시면 감사드리겠습니다.

그럼 오늘도 건강한 하루 보내시길 바랍니다 ^_^

고맙습니다.

728x90
반응형
Comments