Python의 목록에서 중복 제거

  1. Python에서set()함수를 사용하여 목록에서 중복 제거
  2. Python에서OrderDict를 사용하여 목록에서 중복 제거 및 순서 유지

List in Python은 특정 순서로 데이터를 저장하는 데 사용되는 데이터 구조입니다. 목록은 int, float, string, 다른 목록 등과 같은 여러 유형의 데이터를 저장할 수 있습니다. 목록은 변경 가능합니다. 즉, 생성 된 값은 나중에 변경할 수 있습니다. 대괄호[]로 표시됩니다.

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
print(myList)

출력:

[2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

아래와 같이 for루프를 사용하여 위 목록에서 중복 요소를 제거 할 수 있습니다.

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

resultantList = []
 
for element in myList:
    if element not in resultantList:
        resultantList.append(element)

print(resultantList)

출력:

[2, 1, 3, 0, 6, 7, 4, 8]

이 정도의 코드를 작성하고 싶지 않다면 Python의 목록에서 중복 요소를 제거하는 가장 일반적인 두 가지 방법이 있습니다.

  1. 중복 된 요소를 제거한 후 목록 내 요소의 순서를 유지하지 않으려면Set 데이터 구조를 사용할 수 있습니다.
  2. 중복 된 요소를 제거한 후 목록 내 요소의 순서를 유지하려면OrderedDict라는 것을 사용할 수 있습니다.

Python에서set()함수를 사용하여 목록에서 중복 제거

목록에서 중복 항목을 제거하려면 Set이라는 다른 데이터 구조를 사용할 수 있습니다. 집합은 고유 한 값만 포함하는 정렬되지 않은 데이터 유형입니다. 집합이 값을 저장하는 순서는 집합에 요소를 삽입했을 수있는 순서와 다릅니다. 집합은 중괄호{}를 사용하여 표시됩니다.

따라서 세트 내에 저장된 요소를 인쇄 할 때마다 출력 순서가 달라집니다. 이것이 순서가 지정되지 않았기 때문에 집합에서 인덱싱을 수행 할 수없는 이유입니다.

mySet = {80, 10, 50, 18, 3, 50, 8, 18, 9, 8}
print(mySet)

출력:

{3, 8, 9, 10, 80, 18, 50}

요소를 인쇄 한 후 요소의 순서가 어떻게 변경되었는지 확인하십시오.

세트에서 중복은 허용되지 않습니다. 즉, 동일한 요소가 여러 번 있으면 세트는이를 하나의 요소로 간주합니다. 이것이 우리가 파이썬의 목록에서 중복 요소를 제거하기 위해 집합을 사용하는 이유입니다.

original_list = [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]

print("Original List is: ",original_list)

convert_list_to_set = set(original_list)
print("Set is: ",convert_list_to_set)

new_list = list(convert_list_to_set)
print("Resultant List is: ",new_list)

original_list = list(convert_list_to_set)
print("Removed duplicates from original list: ",original_list)

출력:

Original List is:  [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
Set is:  {3, 8, 9, 10, 80, 18, 50}
Resultant List is:  [3, 8, 9, 10, 80, 18, 50]
Removed duplicates from original list:  [3, 8, 9, 10, 80, 18, 50]

set()함수를 적용하여 목록을 집합으로 변환합니다. 그런 다음list()함수를 적용하여 중복을 제거한 변환 된 집합을 목록으로 변환합니다.

Python에서OrderDict를 사용하여 목록에서 중복 제거 및 순서 유지

집합을 사용하여 중복 된 요소를 제거 할 때의 문제점은 특정 순서로 요소를 저장하지 않는다는 것입니다. 따라서 요소가 결과 목록에 저장되는 순서, 즉 중복을 제거한 후 생성 한 목록에 신경 쓰지 않는다면 Set데이터 구조를 사용할 수 있습니다.

그러나 중복을 제거한 후 목록 내 요소의 순서를 유지하려면 Python에서OrderedDict를 사용할 수 있습니다. OrderDict는 요소가 목록에 삽입 된 순서를 유지합니다. OrderDict를 사용하려면 먼저 Python의 컬렉션 모듈에서 from collections import OrderedDict를 가져와야합니다.

from collections import OrderedDict

myList = [2, 1, 2, 3, 0, 6, 7, 6, 8, 0, 4, 8]

final_list = list(OrderedDict.fromkeys(myList))

print(final_list)

출력:

[2, 1, 3, 0, 6, 7, 8, 4]

관련 문장 - Python List

  • Python 목록에서 요소를 바꾸는 방법
  • Python의 목록에서 요소 색인 찾기