리스트에 포함된 특정 요소가 있는 튜플만 걸러내야 할 때는 리스트 컴프리헨션(list comprehension)을 활용하면 간결하게 처리할 수 있습니다.
기본 개념
파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 하나의 자료구조에 저장할 수 있습니다. 튜플의 리스트(list of tuple)란 말 그대로 여러 개의 튜플이 하나의 리스트 안에 담겨 있는 형태를 의미합니다.
리스트 컴프리헨션은 리스트를 순회하면서 원하는 연산을 수행할 수 있도록 해주는 축약 문법으로, 반복문과 조건문을 한 줄로 표현할 수 있어 가독성과 효율성이 뛰어납니다.
예제 코드
my_list = [(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)]
target_list = [34, 11]
print("The list is : ")
print(my_list)
my_result = [tup for tup in my_list if any(i in tup for i in target_list)]
print("The filtered tuple from the list is: ")
print(my_result)실행 결과
The list is : [(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)] The filtered tuple from the list is: [(11, 14)]
코드 설명
- 튜플들로 구성된 리스트를 정의한 뒤 콘솔에 출력합니다.
- 필터링 기준이 될 또 다른 타깃 리스트(target_list)를 정의합니다.
- 리스트 컴프리헨션과
any()함수를 사용하여, 타깃 리스트의 요소 중 하나라도 포함하고 있는 튜플만 원본 리스트에서 추출합니다. - 필터링된 결과는 다시 튜플의 리스트 형태로 만들어집니다.
- 그 결과를 변수에 할당한 후 콘솔에 출력합니다.
위 예제에서 (11, 14) 튜플은 타깃 리스트의 값인 11을 포함하고 있으므로 결과에 남게 되며, 나머지 튜플들은 조건에 맞지 않아 제외됩니다. 이처럼 any()와 제너레이터 표현식을 조합하면 복잡한 반복문 없이도 원하는 조건의 데이터를 손쉽게 필터링할 수 있습니다.