행렬(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)인 표현으로 널리 사용됩니다. 상황에 따라 가독성이 좋은 방식을 선택하면 됩니다.