Python의 목록에서 중복 제거

Sahil Bhosale 2023년1월30일
  1. Python에서set()함수를 사용하여 목록에서 중복 제거
  2. Python에서OrderDict를 사용하여 목록에서 중복 제거 및 순서 유지
Python의 목록에서 중복 제거

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}

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

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

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의collections 모듈에서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]
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

관련 문장 - Python List