Denne artikel fokuserer på en af operationerne for at få en unik liste fra en liste, der indeholder en mulig duplikat. Fjernelse af dubletter fra listeoperation har et stort antal applikationer, og dets viden er derfor god at have i Python.
css-ombrydningstekst
Måder at fjerne dubletter fra listen:
Nedenfor er de metoder, vi vil dække i denne artikel:
- Ved brug af set() metode
- Ved brug af listeforståelse
- Brug af listeforståelse med opregne()
- Ved brug af collections.OrderedDict.fromkeys()
- Brug i, ikke i operatører
- Ved brug af listeforståelse og Array.index() metoden
- Ved brug af Counter() metode
- Ved brug af Numpy unik metode
- Ved hjælp af en Pandas DataFrame
Fjern dubletter fra listen ved hjælp af set()-metoden
Dette er den mest populære måde, hvorpå dubletterne fjernes fra listen set() metode . Men den største og bemærkelsesværdige ulempe ved denne tilgang er, at rækkefølgen af elementet går tabt i denne særlige metode.
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))> |
>
>Produktion
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tidskompleksitet: På)
Rumkompleksitet: På)
Fjern dubletter fra listen ved hjælp af listeforståelse
Denne metode fungerer på samme måde som den ovennævnte metode, men dette er blot en one-liner stenografi af en længere metode udført ved hjælp af listeforståelse. bestille
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))> |
>
>Produktion
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tidskompleksitet: På)
Rumkompleksitet: På)
Fjern dubletter fra listen ved hjælp af listeforståelse med enumerate()
Det listeforståelse kombineret med opregne funktion kan også klare denne opgave. Den søger grundlæggende efter allerede opståede elementer og springer over at tilføje dem. Det bevarer listerækkefø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))> |
>
>Produktion
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)
Rumkompleksitet: På)
Fjern dubletter fra listen i python ved hjælp af collections.OrderedDict.fromkeys()
Dette er den hurtigste metode til at udføre en bestemt opgave. Det fjerner først dubletterne og returnerer en ordbog, der skal konverteres til en liste. Dette fungerer også godt i tilfælde af strenge.
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))> |
>
>Produktion
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: På)
Rumkompleksitet: På)
Fjern dubletter fra listen ved hjælp af in, ikke i operatorer
I denne itererer vi gennem listen og vedligeholder en tilsvarende liste med den, som indeholder elementet fra inputlisten, og før vi tilføjer det nye element til den tilsvarende liste, kontrollerer vi, om elementet allerede eksisterer eller ej i den tilsvarende liste og på denne måde vi kan fjerne duplikatet af inputlisten.
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))> |
>
>Produktion
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)
Rumkompleksitet: På)
Fjern dubletter fra listen vha listeforståelse og Array.index() metode
I denne metode bruger vi listeforståelse til at iterere over listen og matrixindeksering for at hente elementet fra en matrix. Vi tilføjer kun elementerne til arrayet, hvis det første indeks af et element i arrayet matcher elementets aktuelle indeks eller forsømmer 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)> |
>
>Produktion
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)
Rumkompleksitet: På)
Fjern dubletter fra listen ved hjælp af eller Counter() metode
I denne metode bruger vi Counter() metode at lave en ordbog ud fra en given matrix. Hent nu alle nøglerne vha nøgler() metode, som kun giver unikke værdier fra den 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)> |
>
>Produktion
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tidskompleksitet: På)
Rumkompleksitet: På)
Fjern dubletter fra listen ved hjælp af numpy unik metode
Denne metode bruges, når listen indeholder elementer af samme type og bruges til at fjerne dubletter fra listen. Det konverterer først listen til en numpy array og bruger derefter numpy unik() metode for at fjerne alle duplikerede elementer fra listen.
Bemærk: Installer numpy-modulet ved hjælp af kommandoen pip install numpy duplikere
Python3
string array oprettelse i java
# 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))> |
>
>
Produktion
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Tidskompleksitet: På)
Rumkompleksitet: På)
Bruger pandas dataramme
Det pandas.DataFrame.drop_duplicates() metode kan også bruges til at fjerne dubletter fra en liste. Metoden returnerer en ny DataFrame med dubletter fjernet og de originale datarammedata ramme forbliver uændret.
Algoritme:
Opret en panda-dataramme med listen. Brug metoden drop_duplicates() på DataFram og konverter derefter 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))> |
>
>
Produktion:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Tidskompleksitet: Tidskompleksiteten af drop_duplicates()-metoden er O(n log n), da den sorterer værdierne, før duplikater fjernes. Konverteringen fra DataFrame til en liste tager O(n) tid. Derfor er den samlede tidskompleksitet af denne metode O(n log n).
Rumkompleksitet: Rumkompleksiteten af denne metode er O(n), fordi der oprettes en ny DataFrame og en liste, hver med n elementer.