„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Eingabe: Wie kann ich eine Liste basierend auf einer Bedingung effizient partitionieren? Ausgabe: Wie können Sie Listen basierend auf den Bedingungen effizient geteilt?

Eingabe: Wie kann ich eine Liste basierend auf einer Bedingung effizient partitionieren? Ausgabe: Wie können Sie Listen basierend auf den Bedingungen effizient geteilt?

Gepostet am 2025-04-14
Durchsuche:620

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

Partitioning Lists Based on Conditions

When splitting a list into two based on a given condition, it's tempting to iterate over the list twice, creating two new lists as follows:

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, was ineffizient sein kann. Um die Leistung zu verbessern, sollten Sie eine manuelle Iteration mit bedingten Anhängen verwenden:

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 teilgesetzten Elemente zu speichern. Goodvals] die entsprechende Liste basierend auf der Bedingung X in Goodvals auszuwählen.
  • Dieser Ausdruck bewertet auf schlecht, wenn x die Bedingung nicht erfüllt und sonst gut. eins. Es wird auch als eleganter angesehen, da es die Partitionierungslogik auf prägnante und lesbare Weise erfasst.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3