Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man in Python effizient eine Liste von einer anderen subtrahieren?

Wie kann man in Python effizient eine Liste von einer anderen subtrahieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-23 13:50:031077Durchsuche

How to Subtract One List from Another Efficiently in Python?

Eine Liste von einer anderen subtrahieren: Effiziente Techniken und benutzerdefinierte Implementierung

Das Subtrahieren einer Liste von einer anderen ist eine häufige Operation in der Programmierung. In Python kann die direkte Ausführung dieser Operation mit dem Operator „-“ einschränkend sein. Um Listen effektiv zu subtrahieren, sollten Sie die folgenden Ansätze in Betracht ziehen:

Listenverständnis

Eine Liste (y) von einer anderen (x) subtrahieren und dabei die Reihenfolge der Elemente in x beibehalten , verwenden Sie ein Listenverständnis:

<code class="python">[item for item in x if item not in y]</code>

Dieser Ansatz iteriert über jedes Element in x und nimmt es nur dann in die neue Liste auf, wenn es nicht in y vorhanden ist.

Differenz festlegen

Wenn die Reihenfolge der Elemente nicht entscheidend ist, besteht ein effizienterer Ansatz darin, eine Mengendifferenz zu verwenden:

<code class="python">list(set(x) - set(y))</code>

Diese Methode erstellt aus jeder Liste eine Menge und führt eine Subtraktion durch sie und wandelt den resultierenden Satz zurück in eine Liste. Es ist schneller als das Listenverständnis, behält jedoch nicht die ursprüngliche Reihenfolge bei.

Benutzerdefinierte Klasse

Damit die Subtraktionssyntax (x - y) direkt auf Listen funktionieren kann, eine kann eine benutzerdefinierte Klasse erstellen:

<code class="python">class MyList(list):
    ...
    def __sub__(self, other):
        ...</code>

Das Überschreiben der __sub__-Methode ermöglicht ein benutzerdefiniertes Subtraktionsverhalten und stellt die gewünschte Funktionalität bereit.

Beispielverwendung:

<code class="python">x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [1, 3, 5, 7, 9]

# List Comprehension
result_comprehension = [item for item in x if item not in y]
print(result_comprehension)  # [0, 2, 4, 6, 8]

# Set Difference
result_set = list(set(x) - set(y))
print(result_set)  # [0, 2, 4, 6, 8]

# Custom Class
class MyList(list):
    ...
x_custom = MyList([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y_custom = MyList([1, 3, 5, 7, 9])
result_custom = x_custom - y_custom 
print(result_custom)  # [0, 2, 4, 6, 8]</code>

Diese Ansätze bieten je nach den spezifischen Anforderungen und dem gewünschten Verhalten unterschiedliche Möglichkeiten zum Subtrahieren von Listen in Python.

Das obige ist der detaillierte Inhalt vonWie kann man in Python effizient eine Liste von einer anderen subtrahieren?. 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