개요
Python에서 튜플 리스트를 특정 'K'번째 요소를 기준으로 필터링해야 하는 경우가 종종 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 'in' 연산자를 함께 사용하면 간결하고 효율적으로 처리할 수 있습니다.
리스트(list)는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 하나의 자료구조에 저장할 수 있는 Python의 기본 자료형입니다.
튜플 리스트(tuple of list)란 여러 개의 튜플이 리스트 안에 포함된 형태를 말합니다. 'in' 연산자는 특정 값이 반복 가능한 객체(iterable)나 데이터 안에 존재하는지 확인하는 역할을 합니다. 리스트 컴프리헨션은 리스트를 순회하면서 연산을 수행할 수 있는 축약형 문법으로, 코드를 한 줄로 깔끔하게 작성할 수 있게 해줍니다.
아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.
예제 코드
my_list = [(1, 21), (25, 'abc', 'mnq'), (89, 45.65)]
print("체크 리스트가 초기화되었습니다")
check_list = [1, 25, 10, 21]
print("튜플 리스트 :")
print(my_list)
k = 1
print("'k' 값이 1로 초기화되었습니다")
my_result = [elem for elem in my_list if elem[k] in check_list]
print("필터링된 튜플 : ")
print(my_result)실행 결과
체크 리스트가 초기화되었습니다 튜플 리스트 : [(1, 21), (25, 'abc', 'mnq'), (89, 45.65)] 'k' 값이 1로 초기화되었습니다 필터링된 튜플 : [(1, 21)]
코드 설명
- 먼저 튜플들을 담고 있는 리스트를 정의하고, 콘솔에 출력합니다.
- 비교 기준이 될 또 다른 리스트(check_list)를 정의하여 출력합니다.
- 필터링 기준이 될 인덱스 값 'k'를 초기화합니다. 여기서는 k=1이므로 각 튜플의 두 번째 요소를 기준으로 삼습니다.
- 리스트 컴프리헨션을 사용해 my_list를 순회하면서, 각 튜플의 K번째 요소(elem[k])가 check_list에 포함되어 있는지 확인합니다.
- 조건에 해당하는 튜플은 결과 리스트에 유지되고, 그렇지 않은 튜플은 제외됩니다.
- 이렇게 생성된 새로운 리스트를 변수 my_result에 할당합니다.
- 마지막으로 해당 변수의 내용을 콘솔에 출력합니다.
추가 팁
만약 조건이 더 복잡해진다면 filter() 함수와 람다(lambda)를 조합하는 방법도 고려할 수 있습니다. 예를 들어 list(filter(lambda x: x[k] in check_list, my_list))와 같이 작성하면 동일한 결과를 얻을 수 있습니다. 다만 대부분의 경우 리스트 컴프리헨션이 가독성 면에서 더 권장됩니다.