Python-Listenersetzung mit bedingter boolescher Logik
Bei einer gegebenen Liste von Werten möchten Sie möglicherweise bestimmte Elemente basierend auf a selektiv durch „Keine“ ersetzen Zustand. Die durch eine Funktion „condition()“ definierte Bedingung kann anhand seines Werts bestimmen, ob ein Element ersetzt werden soll. Diese Frage untersucht verschiedene Möglichkeiten, diese Ersetzung in Python zu erreichen, und stellt gleichzeitig eine Beispielbedingung bereit, die ungeradzahlige Elemente ersetzt.
Lösung 1: Listenverständnis
Der effizienteste Weg Um diese Ersetzung durchzuführen, muss ein Listenverständnis verwendet werden. Dieser Ansatz generiert eine neue Liste, wobei die ursprüngliche Reihenfolge erhalten bleibt und gleichzeitig übereinstimmende Elemente ersetzt werden:
new_items = [x if x % 2 else None for x in items]
In diesem Beispiel Durch 2 teilbare Elemente (gerade Zahlen) bleiben erhalten, während ungerade Zahlen durch Keine ersetzt werden.
Lösung 2: In-Place Änderung
Alternativ können Sie die Originalliste direkt ändern. Allerdings ist dieser Ansatz geringfügig weniger effizient:
for index, item in enumerate(items):
if not (item % 2):
items[index] = None
Diese Methode durchläuft die Liste und ersetzt ungerade Elemente durch None an Ort und Stelle.
Zeitkomplexitätsanalyse
Beide Lösungen haben eine lineare Zeitkomplexität von O(n), was darauf hinweist, dass ihre Laufzeit proportional mit der Anzahl der Elemente in der zunimmt Liste.
Leistungsbenchmarks
Leistungsbenchmarks zeigen vernachlässigbare Unterschiede zwischen den beiden Lösungen. Bei großen Listen ist das Listenverständnis jedoch etwas schneller.
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