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
Freigeben: 2024-12-13 16:23:20
Original
394 Leute haben es durchsucht

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]
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage