파이썬 | 목록에서 고유한 값 가져오기
이 기사에서는 주어진 목록에서 고유한 요소를 효율적으로 추출하기 위한 다양한 기술과 전략을 살펴보겠습니다. 전통적인 루프부터 현대적인 Python 접근 방식까지 다양한 방법을 탐구함으로써 파이썬.
Input : [ 1,2, 1, 1, 3, 4, 3, 3, 5 ] Output : [1, 2, 3, 4, 5] Explaination: The output only contains the unique element from the input list.
목록에서 고유한 값 가져오기
이 기사에서 다룰 주제는 다음과 같습니다.
- 순회 목록
- 사용 세트 방법
- 사용 감소() 함수
- 사용 Operator.countOf() 방법
- 사용 팬더 모듈
- 사용 numpy.unique
- 사용 컬렉션.카운터()
- 사용 dict.fromkeys()
목록에서 고유한 값 가져오기 목록 순회를 통해
순회를 사용하면 목록의 모든 요소를 순회하고 해당 요소가 이미 Unique_list에 있는지 확인한 다음 해당 요소가 고유 목록에 추가될 수 있습니다. 이것은 하나를 사용하여 수행됩니다 for 루프 값이 고유 목록에 있는지 여부를 확인하는 또 다른 if 문은 루프의 다른 항목과 동일합니다.
파이썬3
# function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> x> not> in> unique_list:> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
시간 복잡도: O(n*n)
보조 공간: 에)
목록에서 고유한 값 가져오기 설정 방법 사용
사용 세트() Python의 속성을 사용하면 고유한 값을 쉽게 확인할 수 있습니다. 목록의 값을 세트에 삽입합니다. Set은 두 번 이상 삽입되더라도 값을 한 번만 저장합니다. list_set=set(list1)으로 집합에 모든 값을 삽입한 후 이 집합을 목록으로 변환하여 인쇄합니다.
파이썬3
def> unique(list1):> > # insert the list to the set> > list_set> => set> (list1)> > # convert the set to the list> > unique_list> => (> list> (list_set))> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출
the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5
시간 복잡도: O(n), 여기서 n은 목록의 길이입니다.
보조 공간: O(n), 여기서 n은 목록의 길이입니다.
Reduce() 함수를 사용하여 Python의 목록에서 고유한 값 가져오기
Python 가져오기 사용 줄이다() functools에서 모든 요소를 반복하고 요소가 중복되거나 고유한 값인지 확인합니다. 아래는 위의 접근 방식을 구현한 것입니다.
파이썬3
from> functools> import> reduce> def> unique(list1):> > # Print directly by using * symbol> > ans> => reduce> (> lambda> re, x: re> +> [x]> if> x> not> in> re> else> re, list1, [])> > print> (ans)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출
the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5]
Operator.countOf() 메서드를 사용하여 Python의 목록에서 고유한 값 가져오기
'unique' 함수는 빈 'unique_list'를 초기화한 다음 'list1'을 반복합니다. 각 요소 'x'에 대해 '를 사용합니다. op.countOf() ' 'unique_list'에 'x'가 있는지 확인합니다. 찾을 수 없는 경우(개수는 0) 'x'가 'unique_list'에 추가됩니다. 최종 고유 값은 다음을 사용하여 인쇄됩니다. 고리 . 드라이버 코드는 'list1'과 'list2'라는 두 목록에 대한 이 프로세스를 보여주며 원래 순서를 유지하면서 각 목록에서 고유한 요소를 추출하는 방법을 보여줍니다.
파이썬3
import> operator as op> # function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> op.countOf(unique_list, x)> => => 0> :> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
시간 복잡도:O(N)
보조공간 : O(N)
pandas 모듈을 사용하여 Python의 목록에서 고유 값 가져오기
'고유' 기능은 팬더 'list1'에서 시리즈를 생성하려면 'drop_duplicates()'를 사용하여 중복을 제거하고 고유 값 목록을 얻습니다. 그런 다음 고유 목록을 반복하고 각 요소를 인쇄합니다. 드라이버 코드는 두 목록 'list1'과 'list2'에 대한 프로세스를 보여 주며 각 목록에 고유한 값을 제공합니다.
파이썬3
import> pandas as pd> # function to get unique values> def> unique(list1):> > unique_list> => pd.Series(list1).drop_duplicates().tolist()> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> #This code is contributed by Vinay Pinjala.> |
산출:
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
시간 복잡도:O(N)
보조공간 : O(N)
목록에서 고유한 값 가져오기 numpy.unique 사용
Python 가져오기 사용 멍청하다 , 배열의 고유 요소도 가져옵니다. 첫 번째 단계에서는 목록을 다음으로 변환합니다. x=numpy.array(목록) 그런 다음 사용 numpy.unique(x) 목록에서 고유한 값을 가져오는 함수입니다. numpy.unique() 목록의 고유한 값만 반환합니다.
파이썬3
# using numpy.unique> import> numpy as np> def> unique(list1):> > x> => np.array(list1)> > print> (np.unique(x))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출:
the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5]
시간 복잡도: numpy.unique() 함수에서 사용하는 정렬 알고리즘을 사용하기 때문에 O(nlogn)입니다.
보조 공간: O(n) numpy.unique() 함수가 입력 배열의 복사본을 만든 다음 고유한 요소를 반환하기 전에 정렬하기 때문입니다.
collections.Counter()를 사용하여 Python의 목록에서 고유한 값 가져오기
Python을 사용하여 Counter() 가져오기 컬렉션 Counter 요소의 모든 키를 인쇄하거나 다음을 사용하여 직접 인쇄합니다. * 상징. 아래는 위의 접근 방식을 구현한 것입니다.
파이썬3
from> collections> import> Counter> # Function to get unique values> def> unique(list1):> > # Print directly by using * symbol> > print> (> *> Counter(list1))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> '
the unique values from 2nd list is'> )> unique(list2)> |
산출
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
시간 복잡도: O(n) , 여기서 n은 입력 목록의 요소 수입니다.
보조공간 : O(n)
dict.fromkeys()를 사용하여 목록에서 고유한 값 가져오기
사용하여 키에서() 사전 데이터 구조 메서드를 사용하면 고유한 요소를 가져올 수 있습니다. 먼저 중복 요소로 구성된 목록을 정의해야 합니다. 그런 다음 fromkeys() 메서드를 사용한 후 결과를 저장할 변수를 사용해야 합니다. fromkeys() 메서드는 사전의 일부이므로 해당 결과를 목록으로 변환합니다. 따라서 기본적으로 모든 고유 키와 해당 값이 None인 사전을 반환합니다.
파이썬3
# defining a list which consists duplicate values> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> # storing the result of the fromkeys()> # operation and converting it into list> unique_list_1> => list> (> dict> .fromkeys(list1))> unique_list_2> => list> (> dict> .fromkeys(list2))> # Printing the final result> print> (unique_list_1,unique_list_2,sep> => '
'> )> |
산출
[10, 20, 30, 40] [1, 2, 3, 4, 5]
시간 복잡도 - O(n)
공간 복잡도 – O(n)