Angenommen, ich wiederhole ein iterables und möchte etwas unternehmen, wenn der Iterator leer ist. Die beiden besten Möglichkeiten, die ich denken kann, dies zu tun sind:Idiomatische Vorgehensweise beim Versuch, eine leere iterierbare Schleife zu durchlaufen
for i in iterable:
# do_something
if not iterable:
# do_something_else
und
empty = True
for i in iterable:
empty = False
# do_something
if empty:
# do_something_else
Die erste auf die hängt die iterable eine Sammlung zu sein (so nutzlos für, wenn der iterable in die übergeben wird Funktion/Methode, wo die Schleife ist) und die zweite setzt empty
auf jedem Durchlauf durch die Schleife, die hässlich erscheint.
Gibt es einen anderen Weg, dass ich vermisse oder ist die zweite Alternative die beste? Es wäre wirklich cool, wenn es eine Klausel gäbe, die ich der Schleifenanweisung hinzufügen könnte, die das für mich behandelt, ähnlich wie else
Marken not_found
Flags weggehen.
Ich bin nicht auf der Suche nach cleveren Hacks.
ich suche nicht nach Lösungen, die eine Menge Code beinhalten
ich für eine einfache Sprache-Funktion suchen. Ich suche nach einer klaren und pythonic Möglichkeit, über eine iterable zu iterieren und etwas zu tun, wenn die iterable leer ist, dass jeder erfahrene Python-Programmierer verstehen wird. Wenn ich es tun könnte, ohne bei jeder Iteration eine Flagge zu setzen, wäre das fantastisch. Wenn es kein einfaches Idiom gibt, das das tut, dann vergiss es.
Das ist natürlich nicht wirklich wichtig, aber ich glaube, der Kommentar in Ihrem Beispiel sollte lauten: a <= x Bolo
@Bolo gut aussehend. – aaronasterling
Siehe auch: http://stackoverflow.com/questions/661603/how-do-i-know-if-a-generator-ist-empty-from-the-start und http://stackoverflow.com/questions/ 1966591/hasnext-in-python-iterators –