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

Python으로 행렬에서 비어 있지 않은 행만 필터링하는 방법

행렬(matrix)에서 비어 있지 않은 행만 골라내야 하는 경우, 간단한 리스트 컴프리헨션(list comprehension)len 메서드를 함께 사용하면 손쉽게 해결할 수 있습니다.

아래 예제를 통해 실제 동작 과정을 확인해 보겠습니다.

예제 코드

my_list = [[21, 52, 4, 74], [], [7, 8, 4, 1], [], []]

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

my_result = [row for row in my_list if len(row) > 0]

print("The resultant list is :")
print(my_result)

실행 결과

The list is :
[[21, 52, 4, 74], [], [7, 8, 4, 1], [], []]
The resultant list is :
[[21, 52, 4, 74], [7, 8, 4, 1]]

코드 설명

  • 정수로 이루어진 리스트의 리스트(2차원 배열)를 정의한 뒤 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용하여 각 행(row)을 순회합니다.

  • 순회 과정에서 len(row) > 0 조건으로 각 행의 길이가 0보다 큰지 검사합니다.

  • 조건을 만족하는 행(요소가 하나 이상 있는 행)만 결과 리스트에 저장됩니다.

  • 비어 있는 행([])은 조건을 만족하지 못하므로 자동으로 제외됩니다.

  • 필터링된 최종 결과는 my_result 변수에 할당됩니다.

  • 마지막으로 해당 변수를 콘솔에 출력하여 결과를 확인합니다.

추가 팁: 더 파이썬다운 표현식

Python에서 빈 리스트는 불린 평가 시 False로 취급되기 때문에, len(row) > 0 대신 다음과 같이 더 간결하게 작성할 수도 있습니다.

my_result = [row for row in my_list if row]

두 방식 모두 동일한 결과를 반환하지만, 후자가 Python 개발자들 사이에서 더 관용적(idiomatic)인 표현으로 널리 사용됩니다. 상황에 따라 가독성이 좋은 방식을 선택하면 됩니다.