jinseon's log

[Python] filter() 함수 본문

Python

[Python] filter() 함수

J_SEON 2025. 7. 11. 05:35

📍 기본 형태

filter(function, iterable)

 

- 파이썬 내장 함수로 iterable한 객체 필터링

- 리스트 내 특정 조건을 만족하는 요소값 or 인덱스 가져오기

 


 

📍 사용 예시

 

1. 함수 사용

 

(1) 특정 조건 요소값 출력

- return num > 2: 해당 조건이 True일 때만 함수 실행

* filter()는 단지 True/False 판단만 함

num_list = [1, 2, 3, 2, 2, 5, 1]

def find_num(num):
    return num > 2
    
filtered = list(filter(find_num, num_list))

print(filtered)
>> [3, 5]

 

(2) 특정 조건 인덱스 출력

num_list = [1, 2, 3, 2, 2, 5, 1]

def find_num(idx):
    return num_list[idx] > 2
    
filtered = list(filter(find_num, range(len(num_list))))

print(filtered)
>> [2, 5]

 

(3) 특정 조건 요소, 인덱스 동시 출력 (enumerate 사용)

- 함수 1개, but 코드 길어짐

num_list = [1, 2, 3, 2, 2, 5, 1]

def find_num(item):
    idx, num = item
    return num > 2
    
filtered = list(filter(find_num, enumerate(num_list)))

print(filtered)
>> [(2, 3), (5, 5)]

# 인덱스, 요소값 분리 (튜플)
indexes, values = zip(*filtered)

# 리스트로 변경
idx_list = list(indexes)
val_list = list(values)

print(idx_list)
>> [2, 5]
print(val_list)
>> [3, 5]

 

 

 

2. lambda 사용

 

(1) 특정 조건 요소 출력

num_list = [1, 2, 3, 2, 2, 5, 1]

filtered = list(filter(lambda x: x > 2, num_list))

print(filtered)
>> [3, 5]

 

(2) 특정 조건 인덱스 출력

num_list = [1, 2, 3, 2, 2, 5, 1]

filtered = list(filter(lambda x: num_list[x] > 2, range(len(num_list))))

print(filtered)
>> [2, 5]

 

- 활용 예시: [프로그래머스 - 등차수열의 특정한 항만 더하기]

- included[x] == 1: included 리스트의 요소가 true

- range(len(included)): 위 조건을 만족할 때의 인덱스

included = [true, false, false, true, true]

filtered = list(filter(lambda x: included[x] == 1, range(len(included))))

print(filtered)
>> [0, 3, 4]

 

Comments