반응형
1 filter() 함수의 사용
filter() 함수는 리스트나 튜플 등 컨테이너(container) 자료에서 특정 조건에 맞는 객체들을 하나씩 가져와 리스트를 만든다. 리스트에서 홀수나 짝수를 뽑는다든지 10 이하의 값들 추출하는 등 조건에 맞는 값을 필터링한다.
사용방법은 filter( ) 안에 조건 함수와 추출할 데이터를 넣는다.
filter(함수, 컨테이너 데이터(리스트/튜플/집합/딕셔너리))
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]에서 짝수를 필터링하는 함수를 만들어 보자. filter() 함수를 이용해 True인 값(짝수)만 추출한다.
list_1 = list(range(11)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 생성
# 짝수 추출함수 정의
def even_filter(x):
if x % 2 == 0:
return True
return False
even_list = list(filter(even_filter, list_1) # [2, 4, 6, 8, 10] 추출 후 저장
다음은 정수나 실수를 뽑아내는 함수를 만들어보자. 이때 사용할 수 있는 함수는 isinstance(a, b) 함수이다. isinstance 함수는 a와 b가 같은 타입의 자료인지를 확인한다.
만약 a가 정수인지를 확인하고 싶다면 isinstance(a, int)로, 실수인지를 확인하고 싶다면 isinstance(a, float)로 설정해 일치하면 True를, 일치하지 않으면 False를 반환한다. 이때 filter() 함수는 True 값만 뽑게 된다.
list_2 = [100, 3.14, 50, 173.2, 2.13, 50.0, 12]
# i가 정수일 때 True 반환
def int_filter(i):
return isinstance(i , int)
int_list = list(filter(int_filter, list_2)) # [100, 50, 12]를 필터링해 반환
2. filter() 함수에 lambda 함수 사용
이렇게 조건을 지정하는 특정 함수를 만들어 filter 함수에 적용할 수도 있지만, 필터를 거는 조건 함수가 그다지 복잡하지 않기 때문에 함수를 따로 정의하는 대신 한 줄 함수 lambda를 이용하는 것이 훨씬 효율적이다.
filter의 함수인자가 들어갈 자리에 lambda 함수(lambda 매개변수: 실행문)를 작성해서 넣으면 된다.
# filter() 함수에 lambda 함수를 사용(짝수 필터링)
list_1 = list(range(11)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 생성
even_list = list(filter(lambda x : x%2 == 0, list_1))
# filter() 함수에 lambda 함수를 사용(정수 필터링)
list_2 = [100, 3.14, 50, 173.2, 2.13, 50.0, 12]
int_list = list(filter(lambda i : isinstance(i, int), list_2))
반응형
'파이썬' 카테고리의 다른 글
[ 코랩과 파이썬 ] 15. python random 모듈로 난수 생성하기(randint, uniform, randrange 포함) (0) | 2023.01.27 |
---|---|
[ 코랩과 파이썬 ] 14. python 정렬 sorted 함수 (itemgetter 함수 포함) (0) | 2023.01.25 |
[ 코랩과 파이썬 ] 12. python 람다 lambda 함수와 맵 map 함수 (0) | 2023.01.17 |
[ 코랩과 파이썬 ] 11. python 함수 def 와 매개변수, 전역변수와 지역변수 (2) | 2023.01.13 |
[ 코랩과 파이썬 ] 10. python 표준 입출력 input, print (0) | 2023.01.12 |