[파이썬] 튜플의 중복 요소 제거

파이썬에서는 리스트와 마찬가지로 튜플에도 중복된 요소가 포함될 수 있습니다. 때때로, 중복 요소를 제거해야 하는 경우가 있는데, 이를 신속하게 처리할 수 있는 방법이 있습니다. 이번 글에서는 파이썬에서 튜플의 중복 요소를 제거하는 방법에 대해 알아보겠습니다.

1. 집합(set) 활용하기

가장 간편하고 효율적인 방법은 집합(set)을 활용하는 것입니다. 집합은 고유한 요소만 저장하며, 중복된 요소는 자동으로 제거됩니다.

# 중복 요소가 포함된 튜플 생성
my_tuple = (1, 2, 3, 2, 4, 5, 3, 6, 1)

# 집합으로 변환하여 중복 요소 제거
unique_tuple = tuple(set(my_tuple))

print(unique_tuple)

이 경우, 출력은 (1, 2, 3, 4, 5, 6)이 될 것입니다. set() 함수를 사용하여 튜플을 집합으로 변환한 후, tuple() 함수를 사용하여 다시 튜플로 변환합니다.

하지만, 집합은 요소의 순서를 보장하지 않기 때문에, 중복 요소를 제거한 후의 튜플 순서는 원본과 다를 수 있습니다.

2. 리스트 컴프리헨션 활용하기

리스트 컴프리헨션은 리스트를 더 간결하게 생성하기 위한 파이썬의 기능입니다. 이를 통해 중복된 요소를 제거할 수도 있습니다.

# 중복 요소가 포함된 튜플 생성
my_tuple = (1, 2, 3, 2, 4, 5, 3, 6, 1)

# 리스트 컴프리헨션을 사용하여 중복 요소 제거
unique_tuple = tuple([x for x in my_tuple if my_tuple.count(x) == 1])

print(unique_tuple)

위의 코드에서 my_tuple.count(x)my_tuple에서 x의 출현 횟수를 반환합니다. 이 값을 이용하여 리스트 컴프리헨션을 작성하면 중복 요소를 제거한 후, 순서는 원본과 동일한 튜플이 생성됩니다.

3. 순서를 유지한 집합 활용하기

만약 중복 요소를 제거하되, 튜플의 순서를 유지하고 싶다면, 파이썬 3.7 이상에서는 순서를 유지한 집합(OrderedSet)을 사용할 수 있습니다. 하지만, 기본적으로 파이썬은 OrderedSet을 내장하고 있지 않기 때문에, collections 모듈을 import하여 사용해야 합니다.

from collections import OrderedDict

# 중복 요소가 포함된 튜플 생성
my_tuple = (1, 2, 3, 2, 4, 5, 3, 6, 1)

# 중복 요소 제거 후, 순서를 유지한 집합으로 변환
unique_tuple = tuple(OrderedDict.fromkeys(my_tuple).keys())

print(unique_tuple)

이 방법은 중복 요소를 제거한 후, 튜플의 순서를 유지하기 때문에 원래 튜플과 동일한 순서를 가지게 됩니다.

결론

파이썬에서 튜플의 중복 요소를 제거하는 방법에 대해 알아보았습니다. 집합(set), 리스트 컴프리헨션, 순서를 유지한 집합을 활용하여 중복을 제거할 수 있습니다. 각 방법은 다양한 상황에 적합하므로, 사용하는 데이터에 맞게 선택하면 됩니다.