행렬(리스트의 리스트)에서 원하는 길이를 가진 행만 골라내어 출력해야 하는 경우, 리스트 컴프리헨션(list comprehension)을 활용하면 간결하고 효율적으로 처리할 수 있습니다.
예제 코드
아래는 리스트 컴프리헨션을 사용해 길이가 4인 행만 필터링하는 예제입니다.
my_list = [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]]
print("The list is :")
print(my_list)
my_key = 4
my_result = [sub for sub in my_list if len(sub) == my_key]
print("The resultant list is :")
print(my_result)실행 결과
The list is : [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]] The resultant list is : [[22, 4, 63, 7]]
코드 설명
먼저 여러 개의 리스트를 요소로 갖는 중첩 리스트(행렬)를 정의하고, 콘솔에 출력하여 확인합니다.
찾고자 하는 행의 길이 기준이 되는 키 값을 변수
my_key에 저장합니다.리스트 컴프리헨션을 사용해 전체 리스트를 순회하면서, 각 요소(행)의 길이가 키 값과 일치하는지
len()함수로 검사합니다.조건을 만족하는 행들로만 구성된 새로운 리스트가 생성되며, 이 결과는 변수
my_result에 할당됩니다.마지막으로 필터링된 결과 리스트를 콘솔에 출력합니다.
핵심 포인트
이 방식의 장점은 별도의 반복문이나 조건문 블록 없이 한 줄의 코드로 원하는 조건의 데이터를 추출할 수 있다는 점입니다. len(sub) == my_key 부분의 비교 연산자를 변경하면, 예를 들어 >= my_key(특정 길이 이상) 또는 < my_key(특정 길이 미만)와 같은 다양한 조건으로 확장할 수도 있습니다.