Hey Tech
[파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식) 본문
오늘은 filter 함수에 대해 알아보겠습니다. 지난 포스팅에서는 람다(lambda) 표현식에 대해 알아보았습니다.
filter 함수 함수는 람다 표현식과 함께 사용하시면 코드를 더욱 간결하고 직관적으로 작성하실 수 있습니다.
람다 표현식에 대한 포스팅은 아래 링크를 참고해 주세요!
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 표현식)
포스팅 내용에 오류가 있는 부분이 있을 경우 댓글을 남겨 주시면 감사드리겠습니다.
그럼 오늘도 건강한 하루 보내시길 바랍니다 ^_^
고맙습니다.
'SW 개발 > Python' 카테고리의 다른 글
[파이썬] 내장 함수를 활용한 데이터 정렬하기! (sorted, sort 함수) (0) | 2021.03.15 |
---|---|
[파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식) (0) | 2021.02.26 |
[파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식) (0) | 2021.02.24 |
[주피터 노트북] 유용한 단축키 모음! (0) | 2021.02.08 |
[파이썬] 결측치(Na, NaN, Null) 제거/변환하기! (0) | 2021.02.02 |