파이썬에서 리스트에 담긴 튜플 중 특정 길이 'K'를 가진 튜플만 골라내어 제거해야 하는 경우가 종종 있습니다. 이럴 때 가장 간결하고 파이썬다운 방법은 바로 리스트 컴프리헨션(list comprehension)을 활용하는 것입니다.
리스트 컴프리헨션은 반복문과 조건문을 한 줄로 압축할 수 있어, 코드가 짧아지고 가독성도 높아집니다. 아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.
예제 코드
my_list = [(32, 51), (22, 13), (94, 65, 77), (70, ), (80, 61, 13, 17)]
print("원본 리스트 : ")
print(my_list)
K = 1
print("K의 값 : ")
print(K)
my_result = [ele for ele in my_list if len(ele) != K]
print("필터링된 리스트 : ")
print(my_result)
실행 결과
원본 리스트 : [(32, 51), (22, 13), (94, 65, 77), (70,), (80, 61, 13, 17)] K의 값 : 1 필터링된 리스트 : [(32, 51), (22, 13), (94, 65, 77), (80, 61, 13, 17)]
코드 설명
리스트 정의 및 출력: 다양한 길이의 튜플들을 포함하는 리스트
my_list를 정의하고, 먼저 원본 상태를 콘솔에 출력합니다.K 값 설정: 제거하고자 하는 길이인 K에 1을 할당하고 화면에 표시합니다.
조건 검사: 리스트 컴프리헨션 내부의
if len(ele) != K조건을 통해, 리스트의 각 튜플 요소를 순회하면서 길이가 K와 다른 요소만 남깁니다.결과 저장: 조건을 통과한 요소들로 구성된 새로운 리스트를 변수
my_result에 할당합니다.최종 출력: 길이가 1인 튜플
(70,)이 제거된 필터링 결과를 콘솔에 출력합니다.
정리
이 방법의 핵심은 len() 함수로 각 튜플의 길이를 확인하고, 조건식(!=)으로 원하는 길이의 튜플을 걸러내는 것입니다. 만약 길이가 K인 튜플만 추출하고 싶다면 조건을 len(ele) == K로 바꾸기만 하면 되므로, 상황에 맞게 유연하게 응용할 수 있습니다.