V tem članku bomo raziskali različne tehnike in strategije za učinkovito pridobivanje različnih elementov z danega seznama. S poglabljanjem v metode, ki segajo od tradicionalnih zank do sodobnih pristopov Pythonic z 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.>
Pridobite edinstvene vrednosti s seznama
Spodaj so teme, ki jih bomo obravnavali v tem članku:
- Prečkanje seznam
- Uporaba Set metoda
- Uporaba reduciraj().
- Uporaba Operator.countOf() metoda
- Uporaba modul pande
- Uporaba numpy.edinstven
- Uporaba zbirke.Števec()
- Uporaba dict.fromkeys()
Pridobite edinstvene vrednosti s seznama s strani Traversal of the List
S prehodom lahko preletimo vsak element na seznamu in preverimo, ali je element že na seznamu unique_list, če ni tam, ga lahko dodamo na seznam unique_list. To se naredi z uporabo enega za zanko in drugi stavek if, ki preveri, ali je vrednost na enoličnem seznamu ali ne, kar je enakovredno drugemu for zanki.
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)> |
>
>Izhod
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>
Časovna zapletenost: O(n*n)
Pomožni prostor: O(n)
Pridobite edinstvene vrednosti s seznama Uporaba metode Set
Uporaba set() lastnost Pythona, lahko preprosto preverimo edinstvene vrednosti. Vrednosti seznama vstavite v niz. Set shrani vrednost samo enkrat, tudi če je vstavljena večkrat. Po vstavitvi vseh vrednosti v naboru z list_set=set(list1), pretvorite ta nabor v seznam, da ga natisnete.
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)> |
>
>Izhod
the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5>
Časovna zahtevnost: O(n), kjer je n dolžina seznama.
Pomožni prostor: O(n), kjer je n dolžina seznama.
Pridobite edinstvene vrednosti s seznama v Pythonu z uporabo funkcije reduce().
Uporaba uvoza Python zmanjšati () iz functools in ponovi vse elemente ter preveri, ali je element podvojena ali edinstvena vrednost. Spodaj je implementacija zgornjega pristopa.
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)> |
>
>Izhod
the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5]>
Pridobite edinstvene vrednosti s seznama v Pythonu z uporabo metode Operator.countOf().
Funkcija 'unique' inicializira prazen 'unique_list', nato pa ponovi skozi 'list1'. Za vsak element 'x' uporablja ' op.countOf() ', da preverite, ali je 'x' prisoten v 'unique_list'. Če ni najden (štetje je 0), se 'x' pripne 'unique_list'. Končne edinstvene vrednosti so natisnjene z a zanka . Koda gonilnika prikazuje ta postopek za dva seznama, 'seznam1' in 'seznam2', ki prikazuje ekstrakcijo različnih elementov iz vsakega seznama, medtem ko ohranja njihov prvotni vrstni red.
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)> |
>
globalna spremenljivka javascript
>Izhod
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>
Časovna zahtevnost: O(N)
Pomožni prostor: O(N)
Pridobite edinstvene vrednosti s seznama v Pythonu z uporabo modula pandas
'Edinstvena' funkcija uporablja Pande za ustvarjanje serije iz 'list1', nato uporabi 'drop_duplicates()' za odpravo dvojnikov in pridobitev seznama edinstvenih vrednosti. Nato se ponovi skozi enolični seznam in natisne vsak element. Koda gonilnika prikazuje postopek za dva seznama, 'seznam1' in 'seznam2', ki zagotavljata različne vrednosti za vsak seznam.
Python3
markdown prečrtano
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.> |
>
>
Izhod:
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>
Časovna zahtevnost: O(N)
Pomožni prostor: O(N)
Pridobite edinstvene vrednosti s seznama Uporaba numpy.unique
Uporaba Pythonovega uvoza numpy , so pridobljeni tudi edinstveni elementi v nizu. V prvem koraku pretvorite seznam v x=numpy.array(seznam) in nato uporabite numpy.unique(x) funkcijo za pridobitev edinstvenih vrednosti s seznama. numpy.unique() vrne samo edinstvene vrednosti na seznamu.
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)> |
>
>
Izhod:
the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5]>
Časovna zahtevnost: O(nlogn) zaradi uporabe algoritma za razvrščanje, ki ga uporablja funkcija numpy.unique().
Pomožni prostor: O(n), ker funkcija numpy.unique() ustvari kopijo vhodne matrike in jo nato razvrsti, preden vrne edinstvene elemente.
Pridobite edinstvene vrednosti s seznama v Pythonu z uporabo collections.Counter()
Uporaba Pythona za uvoz Counter() iz zbirke natisnemo vse ključe Counter elementov ali natisnemo direktno z uporabo * simbol. Spodaj je implementacija zgornjega pristopa.
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)> |
>
>Izhod
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5>
Časovna zahtevnost: O(n) , kjer je n število elementov na vhodnem seznamu.
Pomožni prostor: O(n)
Pridobite edinstvene vrednosti s seznama z uporabo dict.fromkeys()
Uporabljati fromkeys() metodo slovarske podatkovne strukture lahko pridobimo edinstvene elemente. Najprej moramo definirati seznam, ki je sestavljen iz podvojenih elementov. Nato moramo uporabiti spremenljivko, v katero bomo shranili rezultat po uporabi metode fromkeys(). Moramo pretvori ta rezultat v seznam, saj je metoda fromkeys() del slovarja, tako da privzeto vrne slovar z vsemi edinstvenimi ključi in None kot njihovimi vrednostmi.
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>=>'
'>)> |
>
>Izhod
[10, 20, 30, 40] [1, 2, 3, 4, 5]>
Časovna kompleksnost – O(n)
Kompleksnost prostora – O(n)