Wie man Duplikate in einer Liste in Python findet

Rayven Esplanada 14 November 2020
  1. Verwenden Sie die Funktion set(), um Duplikate in einer Python-Liste zu entfernen
  2. Verwenden Sie das Modul iteration_utils, um Duplikate in einer Python-Liste zu finden
Wie man Duplikate in einer Liste in Python findet

Dieses Tutorial zeigt Ihnen, wie Sie in Python nach Duplikaten innerhalb einer Liste suchen können.

Verwenden Sie die Funktion set(), um Duplikate in einer Python-Liste zu entfernen

Python set() ist eine Funktion zur Umwandlung einer Liste in eine Menge. Ausgehend von der Beschreibung einer Menge und einer Liste würde die Umwandlung einer Liste in eine Menge bedeuten, dass alle Duplikate in der Liste entfernt werden.

Was wir jedoch wollen, ist die Suche nach den Einträgen innerhalb der Liste, die Duplikate sind. Dazu verwenden wir nach wie vor die Funktion set(), aber wir nehmen nur diejenigen mit mehr als einem Eintrag in die Liste auf, d.h. es sind Einträge, die Dubletten haben.

Deklarieren Sie eine Funktion, die innerhalb einer Liste nach Dubletten sucht, und speichern Sie diese als Menge.

def listToSet(listNums):
    set([num for num in listNums if listNums.count(x) > 1])

Ein anderer Ansatz, wenn Sie das Ergebnis als Liste statt als Menge behalten wollen, besteht darin, set() und add() zu benutzen, um Duplikate innerhalb der Liste zu finden und sie bei der Rückkehr wieder in eine Liste umzuwandeln.

def list_duplicates(listNums):
    once = set()
    seenOnce = once.add
    twice = set(num for num in listNums if num in once or seenOnce(x))
    return list(twice)

Diese Funktion fügt den Eintrag zu once hinzu, wenn die Zahl zum ersten Mal auftaucht und nicht innerhalb der Menge once existiert.

Beide Funktionen geben die gleiche Ausgabe zurück, obwohl die eine eine Menge und die andere eine Liste ist. Das Ergebnis wird alle doppelten Einträge in listNums ausgeben.

[1, 3, 5, 8]

Verwenden Sie das Modul iteration_utils, um Duplikate in einer Python-Liste zu finden

iteration_utils hat zwei Funktionen, die innerhalb einer vordefinierten Funktion nach Duplikaten suchen können: duplicates und unique_everseen.

Wir werden oben die gleiche Listendefinition listNums verwenden.

Importieren Sie duplicates aus iteration_utils und verwenden Sie sie, um eine Liste aller Duplikate innerhalb von listNums zurückzugeben.

from iteration_utils import duplicates

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDups(listNums):
    return list(duplicates(listNums))

Die Ausgabe der obigen Funktion wird eine Liste aller doppelten Einträge in listNums zurückgeben.

[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]

Allerdings enthält die Liste auch die Iterationen der doppelten Einträge. Das bedeutet, dass sie jede Instanz des doppelten Eintrags zurückgibt.

  • An dieser Stelle kommt unique_everseen ins Spiel. Diese Funktion verarbeitet die Liste, um alle doppelten Instanzen zu entfernen, die duplicates() zurückgibt.
from iteration_utils import duplicates
from iteration_utils import unique_everseen

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDupsUnique(listNums):
    return list(unique_everseen(duplicates(listNums)))

Diese Funktion kehrt dann zurück:

[1, 3, 5, 8]

Zusammenfassend gibt es 2 einfache Lösungen, um in Python nach Duplikaten innerhalb einer Liste zu suchen. Die erste ist die Verwendung von set() und anderen Hilfsfunktionen von Mengen in Python, um nach Duplikaten zu suchen und sie in einer anderen Variablen zu speichern. Eine andere ist das Modul iteration_utils durch die Verwendung von duplicates und unique_everseen, das mehr oder weniger das Gleiche tut und die gleiche Ausgabe erzeugt.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python List