For-Schleife-variable in Python
Kann mir jemand erklären, wie x
nimmt ganzzahlige Werte. Wir sind direkt mit x
in for-Schleife for x in a"
Wie ist der compiler erkennen, dass es x
darstellt, die strings in der Liste?
>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12
len
Funktion intern funktioniert die Typ-überprüfung für x- dieser code gibt einen Fehler Einzug
- Und das problem ist? Sie eine Schleife durch ein array von strings, so dass jedes Element in der Schleife ein string ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
for
anders funktioniert in Python, als es funktioniert in Sprachen wie C. Statt zählen up/down einen numerischen Wert und Prüfung einer Ende-Bedingung, wie Sie in der Regel in C:er iteriert über alle Elemente in dem container (deren Namen referenziert wird nach der
in
):Seine genaue Verhalten hängt von der Art der Behälter (
iterable
) verwendet; in einer Liste oder einem Tupel, wird es beginnen, auf das erste element, dann bewegen Sie sich durch die Liste/Tupel ein Element in einer Zeit, bis das Letzte element erreicht wurde. Jedes der Elemente wird dann auf die durch einen Namen (item
in diesem Beispiel), so dass es betrieben werden kann, die in den Körper der Schleife.In einem Wörterbuch,
for
würde Durchlaufen Sie die dictionary-keys (in einer unbestimmten Reihenfolge), soitem
enthalten würde, ein Schlüssel mit dem Wörterbuch.In einem string, durchläuft er die Buchstaben der Zeichenfolge, eins nach dem anderen. Etc.
Ist es nicht. Es ist dabei das aufeinander folgende Werte, die in der Reihenfolge Sie Durchlaufen, das ist in diesem Fall strings sind.
Die Elemente müssen nicht in einer bestimmten Art, nicht noch einmal vom gleichen Typ sein.
Werden, ein wenig mehr technische, der
for
- Schleife iteriert über einen iterator von einem durchsuchbar.Einem wiederholenden kann eine Liste, ein string, Tupel, etc., ein iterator ist ein Objekt, dass für die iteration.
Mit
for i in a:
verlangen Sie für einen iterator füra
genau so, wie Sie tun, mititer(a)
.Dies geschieht
the_iterator = a.__iter__()
a
hat eine__getitem__()
, indem Sie diese nacheinander mit wachsenden Indizes bisIndexError
ausgelöst.Diese interator ist, dann heißt
.next()
(.__next__()
in Python 3) auf jeder Schleife ausgeführt wird, bis der iterator ist erschöpft und wirftStopIteration
.So, in anderen Worten:
arbeitet intern wie
sieht aber viel schöner.