본문 바로가기
Computer & Program/python

[python] filter 함수

by TDRemon 2024. 2. 14.
반응형

안녕하세요. TDR입니다.

오늘은 python에서의 filter 함수에 대해서 정리해 보겠습니다.

filter 함수는 앞에서 알아본 map 함수와 유사한 형태를 가지지만 차이가 있다면, 입력한 반복 가능한 객체 값에 대한 수정을 하는 것이 아닌, 조건에 맞는 값만 결과로 걸러준다는 차이가 있습니다. (그래서 함수 이름이 filter인 듯 합니다.)

먼저, filter 함수를 쓰지 않고 일반적인 방법으로 구현한 형태를 보면 다음과 같습니다.

input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
output = []

# 매개 변수가 짝수인 경우 True return
def is_even(n):
  if n % 2 == 0:
    return True
  else:
    return False

# input list의 값을 순차적으로 is_even 함수로 보내서 True가 return 되는 값만
# output list에 저장
for value in input:
  if is_even(value):
    output.append(value)

print(output)	# [2, 4, 6, 8, 10]

다음은 filter 함수를 써서 위 코드를 변경해 보겠습니다.

input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
output = []

def is_even(n):
  # 삼항 연산자로 기본 구조는 다음과 같음
  # <조건이_True_인경우> if <조건> else <조건이_False_인경우>
  return True if n % 2 == 0 else False

# filter 함수의 기본 구조는 다음과 같음
# filter(<함수>, <반복_가능한_객체>)
# 함수에서 True를 return한 경우에만 input의 값을 저장해 놓음
output = filter(is_even, input)

print(output)	# [2, 4, 6, 8, 10]

예시로는 보여드힌 함수는 짝수만 걸러내는 단순한 기능만 있지만, 조건문을 잘 만들면 대규모 데이터에서 내가 원하는 값만 잘 추려낼 수 있는 유용한 함수입니다. 

반응형

'Computer & Program > python' 카테고리의 다른 글

[python] lambda(람다)  (0) 2024.02.16
[python] reduce 함수  (0) 2024.02.15
[python] File I/O  (0) 2024.02.03
[python] for 반복문  (0) 2024.02.02
[python] String - 02  (0) 2024.01.31

댓글