Mitgliedschaftstest für mehrere Werte in einer Liste
Frage:
Wie kann man testen? wenn mehrere Werte Mitglieder einer Liste in Python sind? Das erwartete Ergebnis besteht darin, einen booleschen Wert zurückzugeben, der die Zugehörigkeit für jeden Wert angibt, aber der aktuelle Ansatz erzeugt eine unerwartete Ausgabe.
Erklärung:
Der bereitgestellte Codeausschnitt lautet: ' a','b' in ['b', 'a', 'foo', 'bar'] funktioniert nicht wie beabsichtigt, da Python es als Tupel und nicht als Mitgliedschaftstest für einzelne Werte interpretiert.
Antwort:
Um die Mitgliedschaft mehrerer Werte in einer Liste korrekt zu testen, verwenden Sie den folgenden Ausdruck:
<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])</code>
Dies gibt True zurück, wenn alle Werte in Die zweite Liste sind Mitglieder der ersten Liste und andernfalls Falsch.
Andere Optionen:
Verwenden von Mengen:
<code class="python">set(['a', 'b']).issubset(set(['a', 'b', 'foo', 'bar'])) {'a', 'b'} <= {'a', 'b', 'foo', 'bar'}</code>
Diese Methode funktioniert gut, wenn die Elemente in der Liste hashbar sind, kann jedoch ineffizient sein, wenn die Listen groß sind.
Geschwindigkeitstests:
Benchmark-Ergebnisse werden angezeigt dass der Teilmengentest (unter Verwendung von Mengen) im Allgemeinen schneller ist als der All-Ausdruck, der Unterschied jedoch nicht signifikant ist, es sei denn, die Listen sind klein und die Teilmengenoperation wird mit Mengen verwendet. Wenn die Elemente in den Listen jedoch nicht hashbar sind oder die Listen groß sind, ist der Ausdruck „all“ möglicherweise effizienter.
Schlussfolgerung:
Verwendung des Ausdrucks „all“. ist im Allgemeinen eine gute Vorgehensweise zum Testen mehrerer Werte in einer Liste, insbesondere wenn die Elemente nicht hashbar sind und die Effizienz ein Problem darstellt. Wenn die Elemente hashbar sind und die Listen klein sind, kann der Teilmengentest einen leichten Geschwindigkeitsvorteil bringen.
Das obige ist der detaillierte Inhalt vonWie teste ich die Mitgliedschaft mehrerer Werte in einer Python-Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!