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

Python에서 튜플 내 리스트의 중복 요소 제거하기 – 순서 유지 방법

리스트 여러 개로 구성된 튜플(tuple of list)에서 중복 요소를 제거하면서 원래의 순서까지 유지해야 하는 경우가 있습니다. 이럴 때는 리스트 컴프리헨션(list comprehension)set 자료형을 함께 활용하면 간단하게 해결할 수 있습니다.

핵심 개념

리스트 컴프리헨션은 반복문과 조건문을 한 줄로 압축해 표현하는 파이썬 문법입니다. 리스트를 순회하면서 특정 연산을 수행하는 코드를 간결하고 가독성 있게 작성할 수 있게 해줍니다.

또한 파이썬은 기본적으로 set(집합) 자료형을 제공합니다. set은 중복 없는 고유한 값만 저장하며, 교집합(intersection), 차집합(difference), 합집합(union), 대칭차집합(symmetric difference) 같은 집합 연산에도 유용하게 활용됩니다.

예제 코드

my_tuple_1 = ([1, 21, 34], [11, 0, 98], [45, 67, 56])

print("리스트 튜플 출력 : ")
print(my_tuple_1)
temp_val = set()

my_result = [elem for elem in my_tuple_1 if not (tuple(elem) in temp_val or temp_val.add(tuple(elem)))]
print("중복이 제거된 결과 : ")
print(my_result)

실행 결과

리스트 튜플 출력 :
([1, 21, 34], [11, 0, 98], [45, 67, 56])
중복이 제거된 결과 :
[[1, 21, 34], [11, 0, 98], [45, 67, 56]]

동작 원리 설명

  • 먼저 리스트 여러 개로 구성된 튜플을 정의하고 콘솔에 출력합니다.
  • 중복 여부를 확인하기 위해 빈 set(temp_val)을 생성합니다.
  • 리스트 컴프리헨션으로 튜플의 각 요소를 순회하면서, 해당 요소가 아직 set에 없다면 결과 리스트에 추가하고 동시에 튜플 형태로 변환해 set에 저장합니다.
  • 이 과정을 거치면 중복이 제거된 고유한 값들만 남게 되며, 원래 입력 순서는 그대로 유지됩니다.
  • 최종 결과를 변수 my_result에 할당한 뒤 콘솔에 출력합니다.

참고: 리스트는 변경 가능(mutable)한 자료형이라 set에 직접 저장할 수 없습니다. 따라서 tuple(elem)처럼 불변(immutable)인 튜플로 변환한 후 set에 추가해야 하며, 이 변환 덕분에 각 리스트를 고유 식별자처럼 비교할 수 있습니다.