달나라 노트

Python Basic : filter() 본문

Python/Python Basic

Python Basic : filter()

CosmosProject 2020. 12. 23. 00:58
728x90
반응형

 

 

 

python filter 함수는 list에서 원하는 데이터만을 filtering할 수 있도록 해줍니다.

 

바로 예시를 보시죠.

 

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

def filter_condition(x):
    if x >= 5:
        return x
    else:
        pass

list_test_new = list(filter(filter_condition, list_test))

print(list_test_new)


- Output
[5, 6, 7, 8, 9, 10]

위 코드는 1부터 10까지의 저어수를 가진 list에서 5 이상인 정수만을 골라서 list로 만드는 코드입니다.

 

def filter_condition(x) -> 먼저 filter method에서 filtering을 할 때 사용할 함수를 만들어줍니다. 함수의 내용은 5 이상인 값이 주어지면 해당 값을 반환하고 그렇지 않을 경우 pass를 하는 함수를 만듭니다.

 

filter(조건, list) -> filter 함수는 이러렇게 첫 번째 인자로 조건을, 두 번째 인자로 list를 주어줍니다. 그리고 list 로 전체를 감싸서 output이 list가 되게 만들어야하죠.(filter 함수의 output은 filter object이기 때문에 list 함수를 통해서 이를 list로 만들어줘야 합니다.)

 

 

 

 

 

 

 

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

list_test_new = list(filter(lambda x: x >= 5, list_test))

print(list_test_new)


- Output
[5, 6, 7, 8, 9, 10]

동일한 기능을 가지지만 filter method에는 커스텀 함수 대신 lambda 식도 사용할 수 있습니다.

 

filter(lambda x: x >= 5, list_test)

이 부분이 핵심인데 여기를 이해해보면 다음과 같습니다.

1. list_test에 있는 요소들을 하나씩 lambda 식으로 전달

2. lambda 식은 list_test로부터 전달받은 요소를 x에 저장

3. 전달 받은 x값을 가지고 lambda 식의 본문(x >= 5)에 적용하여 True라면 x값을 return하고 False라면 return하지 않음.

 

따라서 이 예시에서는 x >= 5라면 x를 return하고 그렇지 않다면 x를 return하지 않기 때문에 결국 x >= 5인 값들만 모인 list가 생성될 것입니다.

 

 

 

 

 

 

728x90
반응형
Comments