튜플 리스트에서 중복된 튜플을 제거해야 할 때는 반복문과 함께 'any' 메서드와 enumerate 메서드를 활용할 수 있습니다.
핵심 개념 정리
- any() 메서드: 이터러블(iterable) 내의 값 중 하나라도 True가 있으면 True를 반환하고, 모두 False이면 False를 반환합니다.
- enumerate() 메서드: 주어진 이터러블에 인덱스 카운터를 추가하여 (인덱스, 요소) 형태로 반환합니다.
- 리스트(List): 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 자료구조입니다.
- 튜플의 리스트: 하나의 리스트 안에 여러 개의 튜플이 포함된 형태를 의미합니다.
예제 코드
def delete_duplicate(my_lst):
return [[a, b] for i, [a, b] in enumerate(my_lst)
if not any(c == b for _, c in my_lst[:i])]
my_list = [(23, 45), (25, 17), (35, 67), (25, 17)]
print("The list of tuples is")
print(my_list)
print("The function to remove duplicates is called")
print(delete_duplicate(my_list))실행 결과
The list of tuples is [(23, 45), (25, 17), (35, 67), (25, 17)] The function to remove duplicates is called [[23, 45], [25, 17], [35, 67]]
코드 설명
- 'delete_duplicate'라는 이름의 함수가 정의되며, 튜플의 리스트를 매개변수로 받습니다.
- 함수는 enumerate로 리스트를 순회하면서, 현재 요소보다 앞에 있는 튜플들 중 두 번째 값(b)이 같은 것이 있는지 'any' 메서드로 확인합니다.
- 앞서 동일한 값이 없는 경우에만 결과 리스트에 포함시켜, 중복이 제거된 새로운 리스트를 반환합니다.
- 튜플의 리스트가 정의되고 콘솔에 출력됩니다.
- 정의된 리스트를 인자로 전달하여 함수를 호출하고, 그 결과를 콘솔에 출력합니다.
참고: 더 간단한 대안 방법
순서를 유지하면서 중복을 제거하는 것이라면 Python 3.7 이상에서 dict.fromkeys()를 활용하는 방법도 있습니다.
my_list = [(23, 45), (25, 17), (35, 67), (25, 17)] unique_list = list(dict.fromkeys(my_list)) print(unique_list)
실행 결과는 다음과 같습니다.
[(23, 45), (25, 17), (35, 67)]
이 방법은 원본 튜플의 형식(괄호 형태의 튜플)을 그대로 유지하면서 중복만 제거해 주므로, 상황에 따라 더 깔끔한 선택이 될 수 있습니다.