Python | Gaukite unikalių verčių iš sąrašo
Šiame straipsnyje mes išnagrinėsime įvairius metodus ir strategijas, kaip efektyviai išgauti atskirus elementus iš pateikto sąrašo. Gilinantis į metodus, pradedant nuo tradicinių kilpų iki šiuolaikinių Pythonic metodų su 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.
Gaukite unikalių verčių iš sąrašo
Žemiau pateikiamos temos, kurias aptarsime šiame straipsnyje:
- Perėjimas į sąrašą
- Naudojant Nustatyti metodas
- Naudojant sumažinti () funkciją
- Naudojant Operator.countOf() metodas
- Naudojant Pandos modulis
- Naudojant nelygus.unikalus
- Naudojant kolekcijos. Skaitiklis()
- Naudojant dict.fromkeys()
Gaukite unikalių vertybių iš sąrašo pagal sąrašą
Naudodami traversal, galime pereiti kiekvieną sąrašo elementą ir patikrinti, ar elementas jau yra unikaliame_sąraše, jei jo ten nėra, tada galime pridėti jį prie unikalaus_sąrašo. Tai daroma naudojant vieną už kilpą ir kitas if sakinys, kuris patikrina, ar reikšmė yra unikaliame sąraše, ar ne, kuris yra lygiavertis kitam ciklo atveju.
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)> |
Išvestis
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n)
Gaukite unikalių vertybių iš sąrašo Nustatyti metodo naudojimas
Naudojant rinkinys () Python nuosavybė, galime lengvai patikrinti unikalias reikšmes. Įtraukite sąrašo reikšmes į rinkinį. Nustatyti reikšmę išsaugo tik vieną kartą, net jei ji įterpiama daugiau nei vieną kartą. Įterpę visas reikšmes į rinkinį pagal list_set=set(list1), konvertuokite šį rinkinį į sąrašą, kad jį spausdintumėte.
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)> |
Išvestis
the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5
Laiko sudėtingumas: O(n), kur n yra sąrašo ilgis.
Pagalbinė erdvė: O(n), kur n yra sąrašo ilgis.
Gaukite unikalias reikšmes iš Python sąrašo naudodami redukcijos () funkciją
Naudojant Python importavimą sumažinti () iš functools ir pakartokite visus elementus ir patikrina, ar elementas yra pasikartojanti ar unikali reikšmė. Žemiau pateikiamas pirmiau minėto metodo įgyvendinimas.
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)> |
Išvestis
the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5]
Gaukite unikalias reikšmes iš Python sąrašo naudodami Operator.countOf() metodą
Funkcija „unikali“ inicijuoja tuščią „unique_list“, tada kartoja „list1“. Kiekvienam elementui „x“ naudojamas „ op.countOf() “, kad patikrintumėte, ar „x“ yra sąraše „unique_list“. Jei nerasta (skaičius yra 0), „x“ pridedamas prie „unikalus_sąrašas“. Galutinės unikalios reikšmės atspausdinamos naudojant a kilpa . Vairuotojo kodas parodo šį procesą dviem sąrašams „sąrašas1“ ir „sąrašas2“, parodydamas atskirų elementų ištraukimą iš kiekvieno sąrašo, išlaikant pradinę jų tvarką.
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)> |
Išvestis
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(N)
Gaukite unikalių reikšmių iš Python sąrašo, naudodami modulį Pandas
Naudojama „unikali“ funkcija Pandos Norėdami sukurti seriją iš „list1“, tada naudoja „drop_duplicates()“, kad pašalintų dublikatus ir gautų unikalių reikšmių sąrašą. Vėliau jis kartojasi per unikalų sąrašą ir atspausdina kiekvieną elementą. Vairuotojo kodas parodo dviejų sąrašų „list1“ ir „list2“ procesą, pateikdamas skirtingas kiekvieno sąrašo reikšmes.
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.> |
Išvestis:
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(N)
Gaukite unikalių vertybių iš sąrašo Naudojant numpy.unique
Naudojant Python importavimą nelygus , taip pat gaunami unikalūs masyvo elementai. Pirmuoju žingsniu konvertuokite sąrašą į x=numpy.masyvas(sąrašas) ir tada naudoti numpy.unique(x) funkcija, kad gautumėte unikalias reikšmes iš sąrašo. numpy.unique() grąžina tik unikalias sąrašo reikšmes.
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)> |
Išvestis:
the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5]
Laiko sudėtingumas: O(nlogn) dėl numpy.unique() funkcijos naudojamo rūšiavimo algoritmo naudojimo.
Pagalbinė erdvė: O(n), nes funkcija numpy.unique() sukuria įvesties masyvo kopiją ir surūšiuoja ją prieš grąžindama unikalius elementus.
Gaukite unikalias reikšmes iš Python sąrašo naudodami collections.Counter()
Python naudojimas importuoti Counter () iš kolekcijos atspausdinkite visus skaitiklio elementų klavišus arba spausdiname tiesiogiai naudodami * simbolis. Žemiau pateikiamas pirmiau minėto metodo įgyvendinimas.
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)> |
Išvestis
the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5
Laiko sudėtingumas: O(n) , kur n yra elementų skaičius įvesties sąraše.
Pagalbinė erdvė: O(n)
Gaukite unikalias reikšmes iš sąrašo naudodami dict.fromkeys()
Naudojant iš raktų () žodyno duomenų struktūros metodą galime gauti unikalius elementus. Pirmiausia turime apibrėžti sąrašą, kurį sudaro pasikartojantys elementai. Tada turime naudoti kintamąjį, kuriame išsaugosime rezultatą panaudoję fromkeys() metodą.Turime konvertuoti šį rezultatą į sąrašą, nes metodas fromkeys() yra žodyno dalis, todėl pagal numatytuosius nustatymus jis grąžina žodyną su visais unikaliais raktais ir None kaip jų reikšmėmis.
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> => '
'> )> |
Išvestis
[10, 20, 30, 40] [1, 2, 3, 4, 5]
Laiko sudėtingumas – O(n)
Erdvės sudėtingumas – O(n)