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

Python – 범위 요소를 포함하는 행 필터링 방법

리스트에서 특정 범위의 요소들을 모두 포함하는 행만 필터링해야 하는 경우가 있습니다. 이럴 때 파이썬에서는 리스트 컴프리헨션(list comprehension)all() 연산자를 조합하여 간결하게 해결할 수 있습니다.

아래 예제를 통해 구체적인 사용 방법을 살펴보겠습니다.

예제 코드

my_list = [[3, 2, 4, 5, 10], [32, 12, 4, 51, 10],[12, 53, 11], [2, 3, 31, 5, 8, 7]]

print("The list is :")
print(my_list)

i, j = 2, 5

my_result = [index for index in my_list if all(element in index for element in range(i, j + 1))]

print("The result is :")
print(my_result)

실행 결과

The list is :
[[3, 2, 4, 5, 10], [32, 12, 4, 51, 10], [12, 53, 11], [2, 3, 31, 5, 8, 7]]
The result is :
[[3, 2, 4, 5, 10]]

코드 설명

  • 먼저 리스트 안에 여러 개의 리스트(중첩 리스트)를 정의하고 콘솔에 출력합니다.

  • 범위의 시작 값인 정수 'i'와 끝 값인 정수 'j'를 각각 2와 5로 정의합니다.

  • 리스트 컴프리헨션을 사용하여 전체 리스트를 순회하면서, 각 하위 리스트가 앞서 정의한 두 정수로 지정된 범위(range(i, j + 1))의 모든 요소를 포함하는지 확인합니다.

  • all() 함수는 내부 제너레이터 표현식을 통해 범위 내 모든 요소가 해당 행에 존재하는지 검사하며, 하나라도 없으면 False를 반환합니다.

  • 조건을 만족하는 행만 새로운 리스트로 변환되어 결과 변수에 할당됩니다.

  • 최종 결과가 콘솔에 출력됩니다.

핵심 포인트

이 예제에서 range(i, j + 1)은 2부터 5까지의 요소 [2, 3, 4, 5]를 생성합니다. 네 개의 하위 리스트 중 이 요소들을 모두 포함하는 것은 [3, 2, 4, 5, 10]뿐이므로, 결과적으로 해당 리스트만 필터링되어 반환됩니다.

이 기법은 데이터 전처리 과정에서 특정 조건을 만족하는 레코드를 추출할 때 유용하게 활용될 수 있으며, 코드가 한 줄로 간결하여 가독성이 뛰어나다는 장점이 있습니다.