Python – 목록에서 중복 항목을 제거하는 방법
이 문서에서는 중복 가능성이 있는 목록에서 고유한 목록을 가져오는 작업 중 하나에 중점을 둡니다. 목록 작업에서 중복 항목을 제거하는 작업은 응용 프로그램이 많기 때문에 해당 지식을 가지고 있으면 좋습니다. 파이썬.
목록에서 중복 항목을 제거하는 방법:
이 기사에서 다룰 방법은 다음과 같습니다.
- 사용 set() 메소드
- 사용 목록 이해
- 목록 이해를 사용하여 낱낱이 세다()
- 사용 collections.OrderedDict.fromkeys()
- in이 아닌 in을 사용하여 운영자
- 사용 목록 이해 및 Array.index() 메서드
- 사용 카운터() 메서드
- 사용 Numpy 고유 방법
- 사용하여 팬더 데이터프레임
set() 메서드를 사용하여 목록에서 중복 항목을 제거합니다.
이는 목록에서 중복 항목을 제거하는 가장 일반적인 방법입니다. set() 메소드 . 그러나 이 접근 방식의 주요하고 주목할만한 단점은 이 특정 메서드에서는 요소의 순서가 손실된다는 것입니다.
파이썬3
# initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> > +> str> (test_list))> # using set() to remove duplicated from list> test_list> => list> (> set> (test_list))> # printing list after removal> # distorted ordering> print> (> 'The list after removing duplicates : '> > +> str> (test_list))> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]
시간 복잡도: 에)
공간 복잡도: 에)
목록 이해를 사용하여 목록에서 중복 제거
이 방법은 위의 방법과 유사하게 작동하지만 이는 다음의 도움으로 수행된 더 긴 방법의 한 줄짜리 약어일 뿐입니다. 목록 이해. 주문하다
파이썬3
# initializing list> test_list> => [> 1> ,> 3> ,> 5> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> > +> str> (test_list))> # using list comprehension to remove duplicated from list> res> => []> [res.append(x)> for> x> in> test_list> if> x> not> in> res]> # printing list after removal> print> (> 'The list after removing duplicates : '> > +> str> (res))> |
산출
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]
시간 복잡도: 에)
공간 복잡도: 에)
enumerate()와 함께 목록 이해를 사용하여 목록에서 중복 항목을 제거합니다.
그만큼 목록 이해 결합 열거 함수 또한 이 작업을 수행할 수 있습니다. 기본적으로 이미 발생한 요소를 찾아 추가하는 것을 건너뜁니다. 목록 순서를 유지합니다.
파이썬3
# initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> > +> str> (test_list))> # using list comprehension + enumerate() to remove duplicated from list> res> => [i> for> n, i> in> enumerate> (test_list)> if> i> not> in> test_list[:n]]> # printing list after removal> print> (> 'The list after removing duplicates : '> > +> str> (res))> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]
시간 복잡도: 오(n^2)
공간 복잡도: 에)
collections.OrderedDict.fromkeys()를 사용하여 Python의 목록에서 중복 항목을 제거합니다.
이는 특정 작업을 달성하는 가장 빠른 방법입니다. 먼저 중복 항목을 제거하고 목록으로 변환해야 하는 사전을 반환합니다. 이는 문자열의 경우에도 잘 작동합니다.
파이썬3
# using collections.OrderedDict.fromkeys()> from> collections> import> OrderedDict> # initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> > +> str> (test_list))> # using collections.OrderedDict.fromkeys() to remove duplicated from list> res> => list> (OrderedDict.fromkeys(test_list))> # printing list after removal> print> (> 'The list after removing duplicates : '> > +> str> (res))> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]
시간 복잡도: 에)
공간 복잡도: 에)
in 연산자가 아닌 in을 사용하여 목록에서 중복 항목을 제거합니다.
여기에서 우리는 목록을 반복하고 입력 목록의 요소를 보유하는 해당 목록을 유지 관리하며 해당 목록에 새 요소를 추가하기 전에 요소가 해당 목록에 이미 존재하는지 여부를 확인합니다. 입력 목록의 중복을 제거할 수 있습니다.
파이썬3
# initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> +> str> (test_list))> res> => []> for> i> in> test_list:> > if> i> not> in> res:> > res.append(i)> # printing list after removal> print> (> 'The list after removing duplicates : '> +> str> (res))> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]
시간 복잡도: 오(n^2)
공간 복잡도: 에)
다음을 사용하여 목록에서 중복 항목을 제거합니다. 목록 이해 및 Array.index() 메서드
이 방법에서는 목록 이해를 사용하여 목록을 반복하고 배열 인덱싱을 사용하여 배열에서 항목을 가져옵니다. 배열에 있는 요소의 첫 번째 인덱스가 요소의 현재 인덱스와 일치하거나 요소를 무시하는 경우에만 배열에 항목을 추가합니다.
파이썬
# initializing list> arr> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> +> str> (arr))> # using list comprehension + arr.index()> res> => [arr[i]> for> i> in> range> (> len> (arr))> if> i> => => arr.index(arr[i]) ]> # printing list after removal of duplicate> print> (> 'The list after removing duplicates :'> > ,res)> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6]) 시간 복잡도: 오(n^2)
공간 복잡도: 에)
다음을 사용하여 목록에서 중복 항목을 제거합니다. 또는 카운터() 메서드
이 방법에서는 카운터() 메서드 주어진 배열에서 사전을 만듭니다. 이제 다음을 사용하여 모든 키를 검색하십시오. 키() 이전 목록에서 고유한 값만 제공하는 방법입니다.
파이썬3
from> collections> import> Counter> # initializing list> arr> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> +> str> (arr))> # using Counter() + keys() to remove duplicated from list> temp> => Counter(arr)> res> => [> *> temp]> # printing list after removal of duplicate> print> (> 'The list after removing duplicates :'> > ,res)> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]
시간 복잡도: 에)
공간 복잡도: 에)
numpy 고유 방법을 사용하여 목록에서 중복 항목 제거
이 방법은 목록에 동일한 유형의 요소가 포함되어 있을 때 사용되며 목록에서 중복 항목을 제거하는 데 사용됩니다. 먼저 목록을 다음으로 변환합니다. numpy 배열 그런 다음 numpy 고유() 메서드 목록에서 모든 중복 요소를 제거합니다.
참고: pip install numpy 명령을 사용하여 numpy 모듈을 설치하십시오. 복제하다
파이썬3
# initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> > +> str> (test_list))> > # using numpy> import> numpy as np> > # removing duplicated from list> res> => np.unique(test_list)> > # printing list after removal> print> (> 'The list after removing duplicates : '> > +> str> (res))> |
산출
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]
시간 복잡도: 에)
공간 복잡도: 에)
팬더 데이터 프레임 사용
그만큼 pandas.DataFrame.drop_duplicates() 메소드를 사용하여 목록에서 중복 항목을 제거할 수도 있습니다. 이 메서드는 중복 항목이 제거된 새 DataFrame과 원본 데이터 프레임 데이터를 반환합니다. 액자 변함없이 유지됩니다.
연산:
목록을 사용하여 Pandas 데이터 프레임을 만듭니다. DataFram에서 drop_duplicates() 메서드를 사용한 다음 결과 DataFrame을 목록으로 변환합니다.
파이썬3
import> pandas as pd> # initializing list> test_list> => [> 1> ,> 5> ,> 3> ,> 6> ,> 3> ,> 5> ,> 6> ,> 1> ]> print> (> 'The original list is : '> +> str> (test_list))> # creating DataFrame> df> => pd.DataFrame({> 'col'> : test_list})> # using drop_duplicates() method> df.drop_duplicates(inplace> => True> )> # converting back to list> res> => df[> 'col'> ].tolist()> # printing list after removal> print> (> 'The list after removing duplicates : '> +> str> (res))> |
산출:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]
시간 복잡도: drop_duplicates() 메서드의 시간 복잡도는 중복을 제거하기 전에 값을 정렬하므로 O(n log n)입니다. DataFrame에서 목록으로 변환하는 데는 O(n) 시간이 걸립니다. 따라서 이 방법의 전체 시간 복잡도는 O(n log n)입니다.
공간 복잡도: 이 방법의 공간 복잡도는 O(n)입니다. 왜냐하면 각각 n개의 요소를 포함하는 새로운 DataFrame과 목록이 생성되기 때문입니다.