Denne artikkelen fokuserer på en av operasjonene for å få en unik liste fra en liste som inneholder et mulig duplikat. Fjerning av duplikater fra listeoperasjon har et stort antall applikasjoner, og derfor er kunnskapen god å ha i Python.
css-innpakningstekst
Måter å fjerne duplikater fra listen:
Nedenfor er metodene vi vil dekke i denne artikkelen:
- Ved hjelp av set() metode
- Ved hjelp av listeforståelse
- Bruke listeforståelse med enumerate()
- Ved hjelp av collections.OrderedDict.fromkeys()
- Bruker i, ikke i operatører
- Ved hjelp av listeforståelse og Array.index()-metoden
- Ved hjelp av Counter() metode
- Ved hjelp av Numpy unik metode
- Bruker en Pandas DataFrame
Fjern duplikater fra listen ved hjelp av set()-metoden
Dette er den mest populære måten duplikatene fjernes fra listen på set() metode . Men den viktigste og bemerkelsesverdige ulempen med denne tilnærmingen er at rekkefølgen av elementet går tapt i denne spesielle metoden.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using set() to remove duplicated from list> test_list>=> list>(>set>(test_list))> # printing list after removal> # distorted ordering> print> (>'The list after removing duplicates : '> >+> str>(test_list))> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tidskompleksitet: På)
Plass kompleksitet: På)
Fjern duplikater fra listen ved å bruke listeforståelse
Denne metoden fungerer på samme måte som metoden ovenfor, men dette er bare en one-liner stenografi av en lengre metode gjort ved hjelp av listeforståelse. rekkefølge
Python3
# initializing list> test_list>=> [>1>,>3>,>5>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> >+> str>(test_list))> # using list comprehension to remove duplicated from list> res>=> []> [res.append(x)>for> x>in> test_list>if> x>not> in> res]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Produksjon
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tidskompleksitet: På)
Plass kompleksitet: På)
Fjern duplikater fra listen ved å bruke listeforståelse med enumerate()
De listeforståelse kombinert med oppregne funksjon kan også oppnå denne oppgaven. Den ser i utgangspunktet etter allerede oppståtte elementer og hopper over å legge dem til. Det bevarer listerekkefølgen.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using list comprehension + enumerate() to remove duplicated from list> res>=> [i>for> n, i>in> enumerate>(test_list)>if> i>not> in> test_list[:n]]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: O(n^2)
Plass kompleksitet: På)
Fjern duplikater fra listen i python ved å bruke collections.OrderedDict.fromkeys()
Dette er den raskeste metoden for å oppnå en bestemt oppgave. Den fjerner først duplikatene og returnerer en ordbok som må konverteres til en liste. Dette fungerer også bra når det gjelder strenger.
Python3
# using collections.OrderedDict.fromkeys()> from> collections>import> OrderedDict> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using collections.OrderedDict.fromkeys() to remove duplicated from list> res>=> list>(OrderedDict.fromkeys(test_list))> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: På)
Plass kompleksitet: På)
Fjern duplikater fra listen ved å bruke in, ikke i operatorer
I denne itererer vi gjennom listen og opprettholder en tilsvarende liste med den som inneholder elementet til inndatalisten, og før vi legger det nye elementet til den tilsvarende listen sjekker vi om elementet allerede eksisterer eller ikke i den tilsvarende listen og på denne måten vi kan fjerne duplikatet av inndatalisten.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> res>=> []> for> i>in> test_list:> >if> i>not> in> res:> >res.append(i)> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: O(n^2)
Plass kompleksitet: På)
Fjern duplikater fra listen ved hjelp av listeforståelse og Array.index()-metoden
I denne metoden bruker vi listeforståelse for å iterere over listen og matriseindeksering for å hente elementet fra en matrise. Vi legger til elementene til matrisen bare hvis den første indeksen til et element i matrisen samsvarer med den gjeldende indeksen til elementet, ellers neglisjerer elementet.
Python
xd xd betydning
# initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using list comprehension + arr.index()> res>=> [arr[i]>for> i>in> range>(>len>(arr))>if> i>=>=> arr.index(arr[i]) ]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Tidskompleksitet: O(n^2)
Plass kompleksitet: På)
Fjern duplikater fra listen ved å bruke eller Counter() metode
I denne metoden bruker vi Counter() metode å lage en ordbok fra en gitt matrise. Hent nå alle nøklene ved hjelp av nøkler() metode som kun gir unike verdier fra forrige liste.
Python3
from> collections>import> Counter> # initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using Counter() + keys() to remove duplicated from list> temp>=> Counter(arr)> res>=> [>*>temp]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)> |
>
>Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: På)
Plass kompleksitet: På)
Fjern duplikater fra listen ved å bruke numpy unike metode
Denne metoden brukes når listen inneholder elementer av samme type og brukes til å fjerne duplikater fra listen. Den konverterer først listen til en numpy array og bruker deretter numpy unik() metode for å fjerne alle dupliserte elementer fra listen.
Merk: Installer numpy-modulen ved å bruke kommandoen pip install numpy duplisere
Python3
vert linux
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> > # using numpy> import> numpy as np> > # removing duplicated from list> res>=> np.unique(test_list)> > # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>
Produksjon
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Tidskompleksitet: På)
Plass kompleksitet: På)
Bruker pandas dataramme
De pandas.DataFrame.drop_duplicates() metode kan også brukes til å fjerne duplikater fra en liste. Metoden returnerer en ny DataFrame med duplikater fjernet, og de originale datarammedataene ramme forblir uendret.
Algoritme:
Lag en panda-dataramme med listen. Bruk metoden drop_duplicates() på DataFram og konverter deretter den resulterende DataFrame til en liste.
Python3
import> pandas as pd> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> # creating DataFrame> df>=> pd.DataFrame({>'col'>: test_list})> # using drop_duplicates() method> df.drop_duplicates(inplace>=>True>)> # converting back to list> res>=> df[>'col'>].tolist()> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))> |
>
>
Produksjon:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Tidskompleksitet: Tidskompleksiteten til drop_duplicates()-metoden er O(n log n) da den sorterer verdiene før du fjerner duplikater. Konverteringen fra DataFrame til en liste tar O(n) tid. Derfor er den totale tidskompleksiteten til denne metoden O(n log n).
Plass kompleksitet: Plasskompleksiteten til denne metoden er O(n) fordi en ny DataFrame og en liste opprettes, hver med n elementer.