리스트 안에서 Boolean 값 True가 하나라도 포함된 행만 추출해야 하는 경우, 리스트 컴프리헨션(list comprehension)과 any 함수를 함께 사용하면 간단하게 해결할 수 있습니다.
아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
예제 코드
my_tuple = [[False, True], [False, False], [True, False, True], [False]]
print("The tuple is :")
print(my_tuple)
my_result = [row for row in my_tuple if any(element for element in row)]
print("The result is ")
print(my_result)실행 결과
The tuple is : [[False, True], [False, False], [True, False, True], [False]] The result is [[False, True], [True, False, True]]
코드 설명
먼저 리스트 안에 리스트가 중첩된 구조(리스트의 리스트)를 정의하고, 콘솔에 출력하여 원본 데이터를 확인합니다.
리스트 컴프리헨션을 사용해 각 행(row)을 순회하면서 조건을 검사합니다.
any함수는 행 내부의 요소들을 하나씩 확인하여, 단 하나라도True인 요소가 존재하면True를 반환하고, 모두False이면False를 반환합니다.조건을 통과한 행들만 모아 새로운 리스트로 만든 뒤 변수에 할당합니다.
마지막으로 필터링된 결과를 콘솔에 출력합니다.
핵심 포인트
any()는 파이썬의 내장 함수로, 반복 가능한 객체(iterable)를 인자로 받아 그중 하나라도 참인 요소가 있으면 즉시 True를 반환합니다. 이러한 특성 덕분에 복잡한 반복문 없이 한 줄의 코드로 조건에 맞는 행만 깔끔하게 추출할 수 있습니다. 위 예제에서는 [False, False]와 [False]처럼 True가 전혀 없는 행은 자동으로 제외되고, True가 하나 이상 포함된 행만 결과에 남게 됩니다.