logo

Python – Möglichkeiten zum Entfernen von Duplikaten aus der Liste

Dieser Artikel konzentriert sich auf einen der Vorgänge zum Abrufen einer eindeutigen Liste aus einer Liste, die ein mögliches Duplikat enthält. Das Entfernen von Duplikaten aus Listenoperationen hat viele Anwendungen und daher ist es gut, über entsprechende Kenntnisse zu verfügen Python.

Hauptmethode Java

Möglichkeiten zum Entfernen von Duplikaten aus der Liste:

Nachfolgend sind die Methoden aufgeführt, die wir in diesem Artikel behandeln:



Entfernen Sie Duplikate mit der set()-Methode aus der Liste

Dies ist die beliebteste Methode zum Entfernen von Duplikaten aus der Liste set()-Methode . Der größte und bemerkenswerte Nachteil dieses Ansatzes besteht jedoch darin, dass die Reihenfolge der Elemente bei dieser speziellen Methode verloren geht.

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))>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>

Zeitkomplexität: An)
Raumkomplexität: An)

Entfernen Sie Duplikate mithilfe des Listenverständnisses aus der Liste

Diese Methode funktioniert ähnlich wie die obige Methode, es handelt sich jedoch nur um eine einzeilige Abkürzung einer längeren Methode, die mit Hilfe von durchgeführt wird Listenverständnis. Befehl

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))>

>

>

Ausgabe

The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>

Zeitkomplexität: An)
Raumkomplexität: An)

Entfernen Sie Duplikate aus der Liste mithilfe des Listenverständnisses mit enumerate()

Der Listenverständnis zusammen mit Aufzählungsfunktion kann diese Aufgabe auch erfüllen. Grundsätzlich wird nach bereits vorhandenen Elementen gesucht und das Hinzufügen dieser Elemente übersprungen. Die Listenreihenfolge bleibt erhalten.

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))>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Zeitkomplexität: O(n^2)
Raumkomplexität: An)

Entfernen Sie Duplikate aus der Liste in Python mitcollections.OrderedDict.fromkeys()

Dies ist die schnellste Methode, um eine bestimmte Aufgabe zu erfüllen. Zunächst werden die Duplikate entfernt und ein Wörterbuch zurückgegeben, das in eine Liste konvertiert werden muss. Dies funktioniert auch bei Strings gut.

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))>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Zeitkomplexität: An)
Raumkomplexität: An)

Entfernen Sie Duplikate aus der Liste mit den Operatoren „in“, nicht „in“.

Dabei durchlaufen wir die Liste und pflegen mit ihr eine entsprechende Liste, die das Element der Eingabeliste enthält. Bevor wir das neue Element an die entsprechende Liste anhängen, prüfen wir, ob das Element in der entsprechenden Liste bereits vorhanden ist oder nicht Wir können das Duplikat der Eingabeliste entfernen.

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))>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Zeitkomplexität: O(n^2)
Raumkomplexität: An)

Entfernen Sie Duplikate aus der Liste mit Listenverständnis und Array.index()-Methode

Bei dieser Methode verwenden wir das Listenverständnis, um die Liste und die Array-Indizierung zu durchlaufen, um das Element aus einem Array abzurufen. Wir fügen die Elemente nur dann zum Array hinzu, wenn der erste Index eines Elements im Array mit dem aktuellen Index des Elements übereinstimmt oder das Element andernfalls vernachlässigt.

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)>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])>

Zeitkomplexität: O(n^2)
Raumkomplexität: An)

Entfernen Sie Duplikate aus der Liste mit oder Counter()-Methode

Bei dieser Methode verwenden wir die Counter()-Methode um ein Wörterbuch aus einem bestimmten Array zu erstellen. Rufen Sie nun alle Schlüssel mit ab Schlüssel() Methode, die nur eindeutige Werte aus der vorherigen Liste liefert.

Python3

MySQL zeigt alle Benutzer an




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)>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Zeitkomplexität: An)
Raumkomplexität: An)

Entfernen Sie Duplikate mit der Numpy Unique-Methode aus der Liste

Diese Methode wird verwendet, wenn die Liste Elemente desselben Typs enthält, und dient zum Entfernen von Duplikaten aus der Liste. Es konvertiert zunächst die Liste in eine Numpy-Array und verwendet dann die numpy unique() Methode um alle doppelten Elemente aus der Liste zu entfernen.

Hinweis: Installieren Sie das Numpy-Modul mit dem Befehl pip install numpy Duplikat

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))>

>

>

Ausgabe

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>

Zeitkomplexität: An)
Raumkomplexität: An)

Verwendung des Pandas-Datenrahmens

Der pandas.DataFrame.drop_duplicates() Die Methode kann auch verwendet werden, um Duplikate aus einer Liste zu entfernen. Die Methode gibt einen neuen DataFrame mit entfernten Duplikaten und den ursprünglichen Datenrahmendaten zurück rahmen bleibt unverändert.

Algorithmus:

Unix vs. Windows

Erstellen Sie einen Pandas-Datenrahmen mit der Liste. Verwenden Sie die Methode drop_duplicates() für den DataFram und konvertieren Sie dann den resultierenden DataFrame in eine 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))>

>

>

Ausgabe:

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>

Zeitkomplexität: Die zeitliche Komplexität der Methode drop_duplicates() beträgt O(n log n), da sie die Werte sortiert, bevor Duplikate entfernt werden. Die Konvertierung von DataFrame in eine Liste dauert O(n) Zeit. Daher beträgt die Gesamtzeitkomplexität dieser Methode O(n log n).

Raumkomplexität: Die räumliche Komplexität dieser Methode beträgt O(n), da ein neuer DataFrame und eine Liste mit jeweils n Elementen erstellt werden.