Prüfen Sie, ob alle Werte null sind durchsuchbar
Ist es eine gute, prägnante/built-in Möglichkeit zu sehen, ob alle Werte in einem iterierbar sind Nullen? Jetzt bin ich mit all()
mit ein wenig list zu begreifen, aber (für mich) es scheint, wie es sein sollte, eine expressive Methode. Ich würde dies als etwas gleichwertig zu einem memcmp()
in C.
values = (0, 0, 0, 0, 0)
# Test if all items in values tuple are zero
if all([ v == 0 for v in values ]) :
print 'indeed they are'
Ich würde erwarten, dass eine eingebaute Funktion, die so etwas macht wie:
def allcmp(iter, value) :
for item in iter :
if item != value :
return False
return True
Bedeutet, dass die Funktion existiert in python und ich nur blind, oder sollte ich nur stick mit meiner original-version?
Update
Ich bin nicht was darauf hindeutet, dass allcmp()
ist die Lösung. Es ist ein Beispiel, was ich denke vielleicht sinnvoller. Dies ist nicht der Ort, wo ich würde vorschlagen, new built-ins für Python.
Meiner Meinung nach all()
ist das nicht sinnvoll. Es gar nicht Ausdrücken, was "alle" überprüft werden. Man könnte davon ausgehen, dass all()
nimmt eine iterierbar, aber es gar nicht Ausdrücken, was die Funktion suchen (ein iterierbar von bool
s, dass die tests alle von Ihnen für True
). Was ich verlange ist einige Funktion wie mein allcmp()
nimmt zwei Parameter: einen wiederholenden und einen Vergleich Wert. Ich bin gefragt, ob es eine integrierte Funktion, die etwas tut, ähnlich wie meine aus allcmp()
.
Rief ich mir allcmp()
wegen meinem C-hintergrund und memcmp()
der name meiner aus-Funktion ist irrelevant hier.
InformationsquelleAutor der Frage mjschultz | 2010-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generatoren verwenden, anstatt die Listen in Fällen wie:
Edit:
all
ist standard-Python-built-in. Wenn Sie effizient sein wollen, Python-Programmierer sollten Sie wissen wahrscheinlich mehr als die Hälfte von Ihnen (http://docs.python.org/library/functions.html). Sie argumentieren, dassalltrue
ist besser Namen alsall
ist wie das argumentieren, dass Cwhile
sein sollte, rufen Siewhiletrue
. Ist subjektiv, aber ich denke, dass die meisten Menschen lieber kürzere Namen für built-ins. Dies ist, weil Sie wissen sollten, was Sie sowieso tun, und Sie haben, Sie geben eine Menge.Meisten Python-Programmierer verstehen code, den ich schrieb in Sekunden. Ich werde wahrscheinlich testen Sie diesen code auf meinen girlfried (Sie ist Architektin, kein Programmierer, nie benutzt Python) und ich denke, Sie werden es bekommen. Generatoren verwenden, ist besser als mit numpy, weil die Generatoren haben, eleganter syntax. numpy kann schneller sein, aber profitieren Sie nur in seltenen Fällen (Generatoren, wie ich zeigte, sind schnell, Sie profitieren nur, wenn dieser code Engpass in Ihrem Programm).
Kann man wohl nicht erwarten, dass nichts mehr beschreibende von Python.
PS. Hier ist der code, wenn Sie dies tun, in memcpm Stil (ich mag die version mehr, aber vielleicht werden Sie wie diese):
InformationsquelleAutor der Antwort Tomasz Wysocki
Wenn Sie wissen, dass die durchsuchbar werden ausschließlich ganze zahlen enthalten, dann können Sie genau dies tun:
InformationsquelleAutor der Antwort Mark Byers
Wenn Werte ist ein numpy-array können Sie schreiben
InformationsquelleAutor der Antwort John La Rooy