logo

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() 메서드

이 방법에서는 목록 이해를 사용하여 목록을 반복하고 배열 인덱싱을 사용하여 배열에서 항목을 가져옵니다. 배열에 있는 요소의 첫 번째 인덱스가 요소의 현재 인덱스와 일치하거나 요소를 무시하는 경우에만 배열에 항목을 추가합니다.

파이썬




다중 테이블 SQL 선택
# 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과 목록이 생성되기 때문입니다.