Python | Få unikke værdier fra en liste
I denne artikel vil vi udforske forskellige teknikker og strategier til effektivt at udtrække forskellige elementer fra en given liste. Ved at dykke ned i metoder lige fra traditionelle loops til moderne Pythonic tilgange med 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.
Få unikke værdier fra en liste
Nedenfor er de emner, som vi vil dække i denne artikel:
- Gennemkørsel af liste
- Ved brug af Sæt metode
- Ved brug af reduce() funktion
- Ved brug af Operator.countOf() metode
- Ved brug af pandas modul
- Ved brug af numpy.unik
- Ved brug af collections.Counter()
- Ved brug af dict.fromkeys()
Få unikke værdier fra en liste ved Gennemgang af Listen
Ved at bruge traversal kan vi krydse for hvert element i listen og kontrollere, om elementet allerede er i den unikke_liste, hvis det ikke er derovre, så kan vi tilføje det til den unikke_liste. Dette gøres ved hjælp af en for sløjfe og en anden if-sætning, der kontrollerer, om værdien er i den unikke liste eller ej, som svarer til en anden for en løkke.
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
Tidskompleksitet: O(n*n)
Hjælpeplads: På)
Få unikke værdier fra en liste Brug af indstillingsmetode
Ved brug af sæt() egenskab af Python, kan vi nemt tjekke for de unikke værdier. Indsæt værdierne for listen i et sæt. Set gemmer kun en værdi én gang, selvom den er indsat mere end én gang. Efter at have indsat alle værdierne i sættet af list_set=set(liste1), konverter dette sæt til en liste for at udskrive det.
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
Tidskompleksitet: O(n), hvor n er længden af en liste.
Hjælpeplads: O(n), hvor n er længden af en liste.
Få unikke værdier fra en liste i Python ved hjælp af reduce()-funktionen
Bruger Python import reducere() fra functools og iterer over alle elementer og tjekker om elementet er en dublet eller unik værdi. Nedenfor er implementeringen af ovenstående tilgang.
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å unikke værdier fra en liste i Python ved hjælp af Operator.countOf() metoden
Funktionen 'unik' initialiserer en tom 'unik_liste' og gentager derefter 'liste1'. For hvert element 'x' bruger den ' op.countOf() ' for at kontrollere, om 'x' er til stede i 'unique_list'. Hvis ikke fundet (antal er 0), tilføjes 'x' til 'unique_list'. De endelige unikke værdier udskrives ved hjælp af en sløjfe . Driverkoden demonstrerer denne proces for to lister, 'liste1' og 'liste2', der viser udtrækningen af forskellige elementer fra hver liste, mens de bibeholder deres oprindelige rækkefølge.
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
Tidskompleksitet:O(N)
Hjælpeplads: O(N)
Få unikke værdier fra en liste i Python ved hjælp af panda-modulet
Den 'unikke' funktion udnytter Pandaer for at oprette en serie fra 'list1', og derefter anvender 'drop_duplicates()' til at eliminere dubletter og opnå en liste med unikke værdier. Efterfølgende gentager den den unikke liste og udskriver hvert element. Driverkoden demonstrerer processen for to lister, 'liste1' og 'liste2', der giver forskellige værdier for hver liste.
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
Tidskompleksitet:O(N)
Hjælpeplads: O(N)
Få unikke værdier fra en liste Brug af numpy.unique
Bruger Pythons import nusset , opnås også de unikke elementer i arrayet. I det første trin konverteres listen til x=numpy.array(liste) og derefter bruge numpy.unique(x) funktion for at få de unikke værdier fra listen. numpy.unique() returnerer kun de unikke værdier på listen.
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]
Tidskompleksitet: O(nlogn) på grund af brugen af sorteringsalgoritmen, der bruges af funktionen numpy.unique().
Hjælpeplads: O(n), fordi funktionen numpy.unique() opretter en kopi af input-arrayet og derefter sorterer det, før det returnerer de unikke elementer.
Få unikke værdier fra en liste i Python ved hjælp af collections.Counter()
Brug af Python til at importere Counter() fra samlinger print alle nøglerne til tællerelementer eller vi udskriver direkte ved at bruge * symbol. Nedenfor er implementeringen af ovenstående tilgang.
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
Tidskompleksitet: O(n) , hvor n er antallet af elementer i inputlisten.
Hjælpeplads: O(n)
Få unikke værdier fra en liste ved hjælp af dict.fromkeys()
Bruger fromkeys() metode til ordbogs datastruktur kan vi hente de unikke elementer. Først skal vi definere en liste, der består af duplikerede elementer. Derefter skal vi bruge en variabel, hvori vi gemmer resultatet efter at have brugt fromkeys() metoden. Vi skal konverter dette resultat til en liste, da fromkeys()-metoden er en del af ordbogen, så som standard returnerer den en ordbog med alle de unikke nøgler og Ingen som deres værdier.
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> => '
'> )> |
Produktion
[10, 20, 30, 40] [1, 2, 3, 4, 5]
Tidskompleksitet – O(n)
Rumkompleksitet – O(n)