리스트 안에 여러 개의 리스트(중첩 리스트)가 있을 때, 길이가 K와 같은 행을 걸러내고 싶은 경우가 있습니다. 이럴 때 가장 간단한 방법은 반복문과 len() 메서드, 그리고 append() 메서드를 활용하는 것입니다.
예제 코드
아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
my_list = [[41, 7], [8, 10, 12, 8], [10, 11], [6, 82, 10]]
print("리스트 출력 :")
print(my_list)
my_k = 2
print("K 값 :")
print(my_k)
my_result = []
for row in my_list:
if len(row) != my_k :
my_result.append(row)
print("결과 리스트 :")
print(my_result)출력 결과
리스트 출력 : [[41, 7], [8, 10, 12, 8], [10, 11], [6, 82, 10]] K 값 : 2 결과 리스트 : [[8, 10, 12, 8], [6, 82, 10]]
코드 설명
먼저 중첩된 리스트를 정의하고 콘솔에 출력합니다.
제거 기준이 될 K 값을 정의하고 콘솔에 표시합니다.
조건에 맞는 행을 담을 빈 리스트(
my_result)를 생성합니다.반복문을 사용해 원본 리스트의 각 행을 하나씩 순회합니다.
각 행의 길이가 K와 같지 않다면 해당 행을 결과 리스트에 추가합니다. 즉, 길이가 K인 행만 걸러지게 됩니다.
최종적으로 필터링된 결과 리스트가 콘솔에 출력됩니다.
참고: 리스트 컴프리헨션으로 더 간결하게
위 코드는 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 표현할 수도 있습니다.
my_result = [row for row in my_list if len(row) != my_k]
이 방식은 코드가 간결할 뿐만 아니라 실행 속도 면에서도 일반적인 반복문보다 유리한 경우가 많아, 파이썬에서 널리 권장되는 관용구(idiom)입니다.