Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere Methoden zum Entfernen von Duplikaten aus Listen in Python

Mehrere Methoden zum Entfernen von Duplikaten aus Listen in Python

不言
不言Original
2018-04-09 17:30:223415Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn