개발 꿀팁/PYTHON

[파이썬의 filter 함수]

Jammie 2022. 11. 22. 10:56
반응형

모든 것이 양적 변화에서 질적 변화로 이어지는 과정이며 파이썬을 배우는 것도 예외는 아닙니다.언어에서 자주 사용되는 함수를 잘 알고 있어야 문제를 처리하는 과정에서 최적의 솔루션을 신속하게 찾을 수 있습니다.
  
이 기사는 파이썬의 filter 함수를 탐색하여 이 함수의 원리를 최단 시간에 이해할 수 있도록 합니다.또한 조각화된 시간을 사용하여 이 함수를 통합하여 작업 처리 중에 더 효율적으로 만들 수 있습니다.

 

1. filter 함수의 정의
  
filter 함수는 Python에서 일반적으로 사용되는 내장 함수이며 호출은 라이브러리를 로드할 필요 없이 바로 사용할 수 있습니다.그것은 주로 특정 조건에 따라 반복기에서 조건을 충족하지 않는 요소를 필터링하고 불활성 계산된 filter 객체 또는 반복기를 반환하는 데 사용됩니다.조건에 맞는 요소 구성의 새로운 목록을 얻으려면 list 함수로 변환해야 합니다.
  
기본 호출 문법은 다음과 같습니다

filter(function or None, iterable)

function: iterable의 각 요소를 특정 조건에 적합한지 판단하는 함수입니다.
  
None: 함수를 호출하지 않고 반복 가능한 객체의 요소 자체에 대해서만 참과 거짓을 판단하고 참의 요소로 유지합니다.
  
iterables: 반복 가능한 객체(시퀀스, 사전 등)입니다.

  
  

2. filter 함수의 예
  

예 1: 하나의 시퀀스 중 0보다 큰 원소로 구성된 새로운 시퀀스를 구한다.
  
먼저 filter 함수에 list를 추가하지 않은 결과를 보자. 코드는 다음과 같다

c = [-10, 28, 9, -5, 30, 5]
filter(lambda a:a>0, c)

결과를 얻다:

<filter at 0x27950dbb9d0>

비활성 계산된 filter 개체 또는 반복기를 반환합니다.다음으로 list 함수로 변환하면 얻을 수 있는 것을 보자. 코드는 다음과 같다

c = [-10, 28, 9, -5, 30, 5]
list(filter(lambda a:a>0, c))

결과를 얻다:

[28, 9, 30, 5]

결과로부터 filter 함수의 역할은 시퀀스 c에서 0보다 큰 요소를 선택하여 새로운 객체 또는 반복기를 구성하는 것임을 알 수 있습니다.list 함수를 통해 변환한 다음 조건에 맞는 요소 구성의 새로운 목록을 얻습니다.코드의 람다 함수에 익숙하지 않은 친구가 있다면 [Python 상용 함수]를 참고하여 파이썬의 람다 함수를 완전히 익힐 수 있습니다.

  

예2: 순서에서 0이 아닌 숫자로 이루어진 새로운 순서를 구하다
  
filter 함수의 정의에서 filter 함수의 매개변수 None은 함수를 호출하지 않고 반복 가능한 객체의 요소 자체에 대해서만 참과 거짓을 판단하고 참의 요소로 유지함을 의미합니다.
  
테스트 코드는 다음과 같습니다

#계열 중의 0이 아닌 숫자를 찾아내다
c2 = [4, 9, 0, -5, -8, 7, 0]
list(filter(None, c2)

결과를 얻다:

[4, 9, -5, -8, 7]

0은 파이썬에서 기본적으로 False이고 0이 아닌 경우 기본적으로 True이기 때문에 0은 스크리닝 중에 필터링되었습니다.

  

예3: 사전에서 2보다 큰 키로 이루어진 새로운 순서를 구한다
  
filter 함수의 정의에서 반복 가능한 개체를 처리하므로 목록과 사전과 같은 개체를 포함합니다.처음 두 예제 모두 목록을 처리하고 이 예에서는 사전 처리를 봅니다.코드는 다음과 같습니다

#사전에서 2보다 큰 키를 찾다
list(filter(lambdax:x>2, {1:'양쯔', 2:'류시원', 3:'장지커', 4:'왕밍', 5:'유명'}))

결과를 얻다:

[3, 4, 5]

결과로부터 filter 함수가 사전을 처리할 때 스크리닝 대상은 사전의 값이 아니라 사전의 키임을 알 수 있다.

  

예4: 100 이내는 3의 배수이면서 홀수인 양의 정수를 구한다
  
마지막으로 초등학교에서 자주 부딪히는 문제를 보고 100 이내가 3의 배수이자 홀수인 양의 정수를 구합니다.코드는 다음과 같습니다

#100 이내는 홀수이면서 3의 배수의 양의 정수를 구한다
import numpy as np
list(filter(lambdax:x%2!=0 and x%3==0, np.arange(1,101)))

결과를 얻다:

[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

여기서 np.arange(1,101)는 1에서 100까지의 공차가 1인 등차수 열을 나타냅니다.
  
x%2!=0은 이 수가 2로 나눌 수 없음을 나타내며, 즉 홀수입니다.
  
x%3==0은 이 수가 3으로 나눌 수 있음을 나타내며, 즉 3의 배수입니다.
  
수동으로 검토하면 파이썬이 얻은 결과가 정확하다는 것을 알 수 있습니다

 

반응형

'개발 꿀팁 > PYTHON' 카테고리의 다른 글

[파이썬의 where 함수]  (0) 2022.11.22
[파이썬 상용함수 모음]  (0) 2022.11.22
가장 완전한 파이썬 작업 엑셀  (0) 2022.11.22
【Pytho상용 함수]  (0) 2022.11.22
파이썬 크리스마스 선물 그리기  (0) 2022.11.21