Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eine Liste basierend auf einer Bedingung effizient partitionieren?

Wie kann ich eine Liste basierend auf einer Bedingung effizient partitionieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 16:23:20393Durchsuche

How Can I Efficiently Partition a List Based on a Condition?

Partitionieren von Listen basierend auf Bedingungen

Wenn Sie eine Liste basierend auf einer bestimmten Bedingung in zwei Teile aufteilen, ist es verlockend, die Liste zweimal zu durchlaufen. Erstellen Sie zwei neue Listen wie folgt:

good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]

Dieser Ansatz erfordert jedoch zwei separate Iterationen über die Liste, die kann ineffizient sein. Um die Leistung zu verbessern, sollten Sie eine manuelle Iteration mit bedingtem Anhängen in Betracht ziehen:

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)

In diesem Code:

  • Wir initialisieren zwei leere Listen, gut und schlecht, um die partitionierten Elemente zu speichern .
  • Wir iterieren über die Elemente von mylist.
  • Für jedes Element x verwenden wir den Ausdruck (bad, gut)[x in guten Werten], um die entsprechende Liste basierend auf der Bedingung x in guten Werten auszuwählen.
  • Dieser Ausdruck wird als schlecht ausgewertet, wenn x die Bedingung nicht erfüllt, andernfalls als gut.
  • Wir hängen an x mit der Append-Methode zur ausgewählten Liste hinzufügen.

Dieser Ansatz vermeidet die Notwendigkeit zweier separater Iterationen und verbessert die Leistung, indem die Anzahl der Listendurchläufe reduziert wird von zwei auf eins. Es gilt auch als eleganter, da es die Partitionierungslogik prägnant und lesbar erfasst.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste basierend auf einer Bedingung effizient partitionieren?. 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