Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 튜플 리스트에서 중복 튜플 제거하기

튜플 리스트에서 중복된 튜플을 제거해야 할 때는 반복문과 함께 '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)]

이 방법은 원본 튜플의 형식(괄호 형태의 튜플)을 그대로 유지하면서 중복만 제거해 주므로, 상황에 따라 더 깔끔한 선택이 될 수 있습니다.