웹사이트 검색

Python 목록에서 중복 제거


Python 목록에서 중복을 제거하는 방법에는 여러 가지가 있습니다.

  • 임시 목록 사용 및 반복
  • set() 내장 메서드 사용
  • 사전 키 사용
  • 목록 count() 함수
  • 목록 이해력

목록에서 중복 제거

Python 목록에는 중복 요소가 포함될 수 있습니다. 다양한 방법으로 중복 요소를 제거하는 예를 살펴보겠습니다.

1. 임시 목록 사용

이것은 목록에서 중복 요소를 제거하는 무차별 대입 방식입니다. 임시 목록을 만들고 존재하지 않는 경우에만 요소를 추가합니다.

ints_list = [1, 2, 3, 4, 3, 2]

temp = []

for x in ints_list:
    if x not in temp:
        temp.append(x)

ints_list = temp

print(f'Updated List after removing duplicates = {temp}')

출력: 중복 제거 후 업데이트된 목록 = [1, 2, 3, 4] 권장 읽기: Python f-strings

2. set() 함수

Python 집합에는 중복 요소가 없습니다. 내장된 set() 함수를 사용하여 목록을 집합으로 변환한 다음 list() 함수를 사용하여 다시 목록으로 변환할 수 있습니다.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list1 = list(set(ints_list))
print(ints_list1)  # [1, 2, 3, 4]

3. 요소를 사전 키로 나열

우리는 사전 키가 고유하다는 것을 알고 있습니다. dict 클래스에는 iterable의 키로 사전을 생성하기 위해 iterable을 허용하는 fromkeys() 함수가 있습니다.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2)  # [1, 2, 3, 4]

4. List count() 함수 - 권장하지 않음

list count() 메서드는 값의 발생 횟수를 반환합니다. remove() 메서드와 함께 사용하여 목록에서 중복 요소를 제거할 수 있습니다.

ints_list = [1, 2, 3, 4, 3, 2]

for x in ints_list:
    if ints_list.count(x) > 1:
        ints_list.remove(x)
print(ints_list)  # [1, 2, 3, 4]

참고: 아래 주석에서 지적한 바와 같이 동일한 반복자에서 요소를 제거하는 동안 count() 함수를 사용하면 원하지 않는 결과가 발생할 수 있으므로 권장하지 않습니다. 예를 들어:

values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94]

for x in values:
    if values.count(x) > 1:
        values.remove(x)
print(values)  # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice

5. 목록 이해력

list comprehension을 사용하여 iterable에서 목록을 만들 수 있습니다. 이 기술은 중복 요소를 제거하기 위해 임시 목록 및 for 루프를 사용하는 것과 동일합니다. 그러나 코드의 줄 수는 줄어듭니다.

int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp)  # [1, 2, 3, 4]

목록에서 중복을 제거하는 가장 좋은 방법

중복 요소를 원하지 않으면 Set을 사용해야 합니다. 그러나 목록에서 중복 값을 제거해야 하는 경우 다른 임시 집합 또는 목록 개체를 생성하지 않기 때문에 count() 함수를 선호합니다. 따라서 메모리 효율성이 더 높습니다.