Ich habe kürzlich das folgende Beispiel für Pythons für ... else gemacht:
%Vor%Ein Mitschüler sagte mir, dass diese Aufgabe mit Scala wie folgt erledigt werden kann:
%Vor%Was faul ausgewertet wird.
Gibt es in Python etwas Ähnliches wie das exist-Schlüsselwort? Oder gibt es eine PEP dafür?
Python hat auch all()
, das jede Sequenz durchläuft und True
zurückgibt, wenn alle Elemente den Wert true haben.
any()
und all()
haben beide eine Kurzschlussauswertung: Wenn any()
ein Element findet, das true auswertet, stoppt es und gibt True
zurück; und wenn all()
ein Element findet, das false auswertet, stoppt es und gibt False
zurück.
Beide sind insofern "faul", als sie die Python-Iteration verwenden, um Werte einzeln zu ziehen. Zum Beispiel:
%Vor% Dies wird iterieren, bis eine Nicht-Primzahl gefunden wird, und dann False
zurückgeben. Es druckt die Zahlen als Nebeneffekt, damit Sie sehen können, wie es funktioniert. Ich habe es gerade versucht und habe:
P.S. Ich ging zu einem Vortrag bei einer Python-Konferenz, und der Sprecher erwähnte, dass er any()
häufig als sehr effizienten Weg benutzt, um eine Schleife zu machen. Eine for
-Schleife bindet die Schleifenvariable für jede Schleife neu, aber any()
tut dies nicht; es überprüft nur die Werte. Also, wenn Sie any()
mit einer Funktion verwenden, die immer None
oder einen falschen Wert zurückgibt, wird es bis zum Ende der Sequenz durchlaufen, und nach diesem Typ ist es der schnellste Weg in Python, es zu tun. (Und wenn Ihre Funktion einen Wert zurückgibt, der nicht None
ist und nicht falsch ist, können Sie all()
für denselben Trick verwenden. Die einzige Zeit, die es nicht funktioniert, ist, wenn die Funktion manchmal einen wahren Wert zurückgibt es gibt einen falschen Wert zurück, aber Sie können es immer zwingen zu arbeiten:
P. P. S. Lassen Sie uns all()
verwenden, um isPrime()
neu zu schreiben! Ich werde den Namen in is_prime()
ändern, um PEP 8 zu entsprechen. Ссылка
Tags und Links python