Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 리스트에서 짝수 값만 필터링하는 3가지 방법

데이터 분석 작업에서는 특정 조건을 만족하는 값만 리스트에서 추출해야 하는 경우가 자주 발생합니다. 이 글에서는 Python 리스트에서 짝수 값만 골라내는 필터링 방법을 세 가지 방식으로 소개합니다.

기본 원리는 간단합니다. 리스트의 각 요소를 순회하면서 2로 나눈 나머지를 확인하고, 나머지가 0이면 짝수로 판단합니다. 이렇게 걸러낸 짝수들만 모아 새로운 리스트를 만들면, 그것이 바로 우리가 적용한 필터링 조건의 결과가 됩니다.

1. for 반복문 사용하기

가장 직관적이고 간단한 방법입니다. for 반복문으로 리스트의 요소를 하나씩 읽어 들이고, 2로 나누어 떨어지는지 검사한 뒤, 조건을 만족하는 요소만 빈 리스트에 추가(append)합니다.

예제

list_A = [33, 35, 36, 39, 40, 42]

res = []

for n in list_A:
   if n % 2 == 0:
      res.append(n)
print(res)

실행 결과

[36, 40, 42]

위 코드는 33, 35, 39처럼 2로 나누어 떨어지지 않는 홀수는 제외하고, 36, 40, 42만 결과 리스트에 담습니다.

2. while 반복문 사용하기

리스트의 길이를 미리 알 수 없거나 인덱스 기반 처리가 필요할 때는 while 반복문과 len() 함수를 조합하면 동일한 결과를 얻을 수 있습니다.

예제

list_A = [33, 35, 36, 39, 40, 42]

res = []
n = 0

while (n < len(list_A)):
    if list_A[n] % 2 == 0:
        res.append(list_A[n])
    n += 1
print(res)

실행 결과

[36, 40, 42]

인덱스 변수 n이 리스트 길이에 도달할 때까지 반복하며, 각 위치의 값이 짝수인 경우에만 결과 리스트에 추가됩니다.

3. filter() 함수와 lambda 사용하기

Python다운 간결한 방법을 원한다면 lambda와 filter() 함수를 조합할 수 있습니다. lambda가 짝수 판별 조건을 정의하고, filter()가 그 조건에 맞는 요소만 원본 리스트에서 걸러냅니다.

예제

list_A = [33, 35, 36, 39, 40, 42]

x = lambda m: m % 2 == 0
res = list(filter(x, list_A))

print(res)

실행 결과

[36, 40, 42]

filter()는 필터 객체를 반환하므로, list()로 감싸서 일반 리스트 형태로 변환해 주어야 합니다.

마무리

세 가지 방법 모두 동일한 결과를 출력하지만 상황에 따라 적합성이 다릅니다. 초보자에게는 로직 이해에 좋은 for 반복문, 인덱스 제어가 필요하면 while 반복문, 간결하고 가독성 높은 코드를 원한다면 filter() + lambda 방식을 추천합니다. 참고로 실무에서는 리스트 컴프리헨션(list comprehension)인 [n for n in list_A if n % 2 == 0]도 널리 사용되는 효율적인 대안입니다.