logo

Python | Få unika värden från en lista

I den här artikeln kommer vi att utforska olika tekniker och strategier för att effektivt extrahera distinkta element från en given lista. Genom att fördjupa sig i metoder som sträcker sig från traditionella loopar till moderna Pythonic-metoder med Pytonorm.

  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.>

Få unika värden från en lista

Nedan är de ämnen som vi kommer att ta upp i den här artikeln:



  • Traversering av lista
  • Använder sig av Uppsättning metod
  • Använder sig av reduce() funktion
  • Använder sig av Operator.countOf() metod
  • Använder sig av pandas modul
  • Använder sig av numpy.unique
  • Använder sig av collections.Counter()
  • Använder sig av dict.fromkeys()

Få unika värden från en lista genom genomgång av listan

Genom att använda traversal kan vi traversera för varje element i listan och kontrollera om elementet redan finns i unique_list om det inte finns där borta, sedan kan vi lägga till det i unique_list. Detta görs med en för slinga och en annan if-sats som kontrollerar om värdet finns i den unika listan eller inte som är likvärdig med en annan för en loop.

Python3








# 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)>

>

>

Produktion

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>

Tidskomplexitet: O(n*n)
Hjälputrymme: På)

Få unika värden från en lista Använder Set Method

Använder sig av uppsättning() Pythons egendom kan vi enkelt kontrollera de unika värdena. Infoga värdena för listan i en uppsättning. Set lagrar bara ett värde en gång även om det infogas mer än en gång. Efter att ha infogat alla värden i uppsättningen av list_set=set(list1), konvertera denna uppsättning till en lista för att skriva ut den.

Python3




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)>

>

>

Produktion

the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5>

Tidskomplexitet: O(n), där n är längden på en lista.
Hjälputrymme: O(n), där n är längden på en lista.

Få unika värden från en lista i Python med reducer()-funktionen

Använder Python-import minska() från functools och iterera över alla element och kontrollerar om elementet är ett duplikat eller unikt värde. Nedan är implementeringen av ovanstående tillvägagångssätt.

Python3




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)>

>

>

Produktion

the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5]>

Få unika värden från en lista i Python med metoden Operator.countOf().

Funktionen 'unik' initierar en tom 'unik_lista' och itererar sedan genom 'lista1'. För varje element 'x' används ' op.countOf() ' för att kontrollera om 'x' finns i 'unique_list'. Om den inte hittas (antalet är 0), läggs 'x' till i 'unique_list'. De slutliga unika värdena skrivs ut med hjälp av en slinga . Drivrutinskoden demonstrerar denna process för två listor, 'list1' och 'list2', som visar extraheringen av distinkta element från varje lista samtidigt som deras ursprungliga ordning bibehålls.

Python3




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)>

>

>

Produktion

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>

Tidskomplexitet:O(N)
Hjälputrymme: O(N)

Få unika värden från en lista i Python med hjälp av pandasmodulen

Den 'unika' funktionen använder Pandas för att skapa en serie från 'list1', använder sedan 'drop_duplicates()' för att eliminera dubbletter och få en lista med unika värden. Därefter itererar den genom den unika listan och skriver ut varje element. Drivrutinskoden visar processen för två listor, 'list1' och 'list2', som ger distinkta värden för varje lista.

Python3




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.>

>

>

Produktion:

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>

Tidskomplexitet:O(N)
Hjälputrymme: O(N)

Få unika värden från en lista Använder numpy.unique

Använder Pythons import numpy , erhålls också de unika elementen i arrayen. I det första steget konvertera listan till x=numpy.array(lista) och använd sedan numpy.unique(x) funktion för att få de unika värdena från listan. numpy.unique() returnerar endast de unika värdena i listan.

Python3




# 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)>

>

>

Produktion:

the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5]>

Tidskomplexitet: O(nlogn) på grund av användningen av sorteringsalgoritmen som används av funktionen numpy.unique().
Extra utrymme: O(n) eftersom funktionen numpy.unique() skapar en kopia av inmatningsmatrisen och sedan sorterar den innan de unika elementen returneras.

Få unika värden från en lista i Python med collections.Counter()

Använder Python för att importera Counter() från samlingar skriv ut alla nycklar till Counter element eller så skriver vi ut direkt med hjälp av * symbol. Nedan är implementeringen av ovanstående tillvägagångssätt.

Python3




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)>

>

>

Produktion

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>

Tidskomplexitet: O(n) , där n är antalet element i inmatningslistan.
Hjälputrymme : O(n)

Få unika värden från en lista med dict.fromkeys()

Använda fromkeys() metod för ordboksdatastruktur kan vi hämta de unika elementen. Först måste vi definiera en lista som består av dubbletter av element. Sedan måste vi använda en variabel där vi kommer att lagra resultatet efter att ha använt fromkeys()-metoden. Vi måste konvertera det resultatet till en lista, eftersom fromkeys()-metoden är en del av ordboken, så som standard returnerar den en ordbok med alla unika nycklar och None som värden.

Python3




# 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>=>' '>)>

binär sökning i java

>

>

Produktion

[10, 20, 30, 40] [1, 2, 3, 4, 5]>

Tidskomplexitet – O(n)
Rymdkomplexitet – O(n)