Heim > Artikel > Backend-Entwicklung > Mehrere Methoden zum Entfernen von Duplikaten aus Listen in Python
Dieser Artikel stellt hauptsächlich verschiedene Methoden zum Deduplizieren von Listen in Python vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.
Ich bin heute auf ein Problem gestoßen. Es wird die Funktion itertools.groupby verwendet. Dieses Ding wurde jedoch letztendlich nicht verwendet.
Das Problem besteht darin, die News-IDs in einer Liste zu deduplizieren und sicherzustellen, dass die Reihenfolge nach der Deduplizierung unverändert bleibt.
Intuitive Methode
Die einfachste Idee ist:
Code kopierenCode als folgt:
ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids: if id not in news_ids: news_ids.append(id) print news_ids
Das geht auch, sieht aber nicht cool genug aus.
Set verwenden
Eine andere Lösung ist die Verwendung von Set:
Kopieren Sie den CodeDer Code lautet wie folgt :
ids = [1,4,3,3,4,2,3,4,5,6,1] ids = list(set(ids))
Das Ergebnis ist, dass die ursprüngliche Reihenfolge nicht beibehalten wird.
Nochmals nach dem Index sortieren
Endlich so gelöst:
Code kopierenDer Code lautet wie folgt:
ids = [1,4,3,3,4,2,3,4,5,6,1] news_ids = list(set(ids)) news_ids.sort(ids.index)
Verwenden Sie itertools.grouby
Der Artikel erwähnte itertools.grouby am Anfang, wenn Ihnen die Reihenfolge der nicht wichtig ist Liste können Sie Folgendes verwenden:
Kopieren Sie den Code Der Code lautet wie folgt:
ids = [1,4,3,3,4,2,3,4,5,6,1] ids.sort() it = itertools.groupby(ids) for k, g in it: print k
Für das Prinzip von itertools.groupby können Sie siehe hier: http://docs.python.org/2/library/itertools.html# itertools.groupby
Netizen hinzugefügt: Use Reduce
Netizen reatlk left eine Nachricht mit einer anderen Lösung. Ich habe hier hinzugefügt und erklärt:
Kopieren Sie den Code Der Code lautet wie folgt:
In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1] In [6]: func = lambda x,y:x if y in x else x + [y] In [7]: reduce(func, [[], ] + ids) Out[7]: [1, 4, 3, 2, 5, 6]
Das Obige ist der Code, den ich ausführe ipython, wobei das Lambda x,y:x, wenn y in x, sonst x + [y] dem Lambda x,y: y in x und x oder x+[y] entspricht.
Die Idee besteht darin, zuerst die IDs in [[], 1,4,3,...] zu ändern und dann die Reduzierungsfunktion zu verwenden. Die Erklärung zum Reduzieren finden Sie hier: http://docs.python.org/2/library/functions.html#reduce
Das obige ist der detaillierte Inhalt vonMehrere Methoden zum Entfernen von Duplikaten aus Listen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!