Dit artikel richt zich op een van de bewerkingen om een unieke lijst te verkrijgen uit een lijst die een mogelijk duplicaat bevat. Het verwijderen van duplicaten uit de lijstbewerking heeft een groot aantal toepassingen en daarom is de kennis ervan goed om in te hebben Python.
het is
Manieren om duplicaten uit de lijst te verwijderen:
Hieronder staan de methoden die we in dit artikel zullen behandelen:
- Gebruik makend van set() methode
- Gebruik makend van lijst begrip
- Lijstbegrip gebruiken met opsommen()
- Gebruik makend van collecties.OrderedDict.fromkeys()
- Gebruikt in, niet in exploitanten
- Gebruik makend van lijst begrip en Array.index() methode
- Gebruik makend van Counter()-methode
- Gebruik makend van Numpy unieke methode
- Gebruik maken van een Panda's DataFrame
Verwijder duplicaten uit de lijst met behulp van de set()-methode
Dit is de meest populaire manier waarop de duplicaten uit de lijst worden verwijderd set() methode . Maar het belangrijkste en opvallende nadeel van deze aanpak is dat de volgorde van het element bij deze specifieke methode verloren gaat.
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))> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tijdcomplexiteit: Op)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met behulp van lijstbegrip
Deze methode werkt op dezelfde manier als de bovenstaande methode, maar dit is slechts een oneliner-afkorting van een langere methode die wordt uitgevoerd met behulp van lijst begrip. volgorde
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))> |
>
>Uitvoer
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Tijdcomplexiteit: Op)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met behulp van lijstbegrip met enumerate()
De lijst begrip gekoppeld aan functie opsommen kan deze taak ook verwezenlijken. Het zoekt in principe naar reeds voorkomende elementen en slaat het toevoegen ervan over. Het behoudt de lijstvolgorde.
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))> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tijdcomplexiteit: O(n^2)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst in Python met behulp van collections.OrderedDict.fromkeys()
Dit is de snelste methode om een bepaalde taak te volbrengen. Het verwijdert eerst de duplicaten en retourneert een woordenboek dat naar een lijst moet worden geconverteerd. Dit werkt ook goed bij snaren.
Python3
hoeveel weken in een maand
# 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))> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tijdcomplexiteit: Op)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met de operators in en niet in
Hierin doorlopen we de lijst en houden we er een corresponderende lijst mee bij die het element van de invoerlijst bevat. Voordat we het nieuwe element aan de corresponderende lijst toevoegen, controleren we of het element al of niet in de corresponderende lijst bestaat en op deze manier we kunnen het duplicaat van de invoerlijst verwijderen.
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))> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tijdcomplexiteit: O(n^2)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met behulp van lijstbegrip en de methode Array.index().
Bij deze methode gebruiken we lijstbegrip om de lijst en array-indexering te herhalen om het item uit een array te halen. We voegen de items alleen aan de array toe als de eerste index van een element in de array overeenkomt met de huidige index van het element of anders het element verwaarloost.
Python
# 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)> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Tijdcomplexiteit: O(n^2)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met behulp van de of Counter()-methode
Bij deze methode gebruiken we de Counter()-methode om een woordenboek te maken van een gegeven array. Haal nu alle sleutels op met behulp van sleutels() methode die alleen unieke waarden uit de vorige lijst oplevert.
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)> |
>
>Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Tijdcomplexiteit: Op)
Ruimtecomplexiteit: Op)
Verwijder duplicaten uit de lijst met behulp van de numpy-unieke methode
Deze methode wordt gebruikt wanneer de lijst elementen van hetzelfde type bevat en wordt gebruikt om duplicaten uit de lijst te verwijderen. Het converteert eerst de lijst naar een numpy-array en gebruikt dan de numpy unieke() methode om alle dubbele elementen uit de lijst te verwijderen.
Opmerking: Installeer de numpy-module met de opdracht pip install numpy duplicaat
Python3
# 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))> |
>
>
Uitvoer
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Tijdcomplexiteit: Op)
Ruimtecomplexiteit: Op)
Panda's-dataframe gebruiken
De pandas.DataFrame.drop_duplicates() methode kan ook worden gebruikt om duplicaten uit een lijst te verwijderen. De methode retourneert een nieuw DataFrame waaruit de duplicaten zijn verwijderd, en de originele dataframegegevens kader blijft onveranderd.
Algoritme:
Maak een panda-dataframe met de lijst. Gebruik de methode drop_duplicates() op het DataFram en converteer vervolgens het resulterende DataFrame naar een lijst.
Python3
Java-uitzonderingen
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))> |
>
>
Uitgang:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Tijdcomplexiteit: De tijdscomplexiteit van de methode drop_duplicates() is O(n log n), omdat deze de waarden sorteert voordat duplicaten worden verwijderd. De conversie van DataFrame naar een lijst kost O(n) tijd. Daarom is de totale tijdscomplexiteit van deze methode O(n log n).
Ruimtecomplexiteit: De ruimtecomplexiteit van deze methode is O(n) omdat er een nieuw DataFrame en een lijst worden gemaakt, elk met n elementen.