zip Variable leer nach der ersten Verwendung

7

Python 3.2.3, mit Idle, Python-Shell

%Vor%

Ergebnis: (1,5) (2,6) (3,7)

GENAU den gleichen Schleifencode einfügen, um z sofort wieder in einer for-Schleife anzuzeigen (nichts zwischen dem obigen und dem nächsten Teil):

%Vor%

Ergebnis: (leer, wie in keinem Ergebnis)

z existiert noch, wie

%Vor%

führt zu

%Vor%

Ich kann sogar das t, t2 neu zuweisen, um wieder gezippt zu werden, aber dann funktioniert es nur einmal und nur einmal, wieder.

Soll das so funktionieren? Theres keine Erwähnung in den Dokumenten Ссылка darüber.

    
jason 21.07.2013, 21:41
quelle

3 Antworten

10

So funktioniert es in Python 3.x. In python2.x hat zip eine Liste von Tupeln zurückgegeben, aber für python3.x verhält sich zip wie itertools.izip in python2.x. Um das Verhalten von python2.x wieder herzustellen, erstellen Sie einfach eine Liste aus der Ausgabe von zip :

%Vor%

Beachten Sie, dass in python3.x viele eingebaute Funktionen jetzt Iteratoren und nicht Listen zurückgeben ( map , zip , filter )

    
mgilson 21.07.2013, 21:42
quelle
6

Weil zip einen Iterator in Python 3.x zurückgibt. Wenn Sie es wiederverwenden wollen, dann machen Sie es zu einem list first:

%Vor%     
Jon Clements 21.07.2013 21:42
quelle
3

zip gibt einen Iterator (in Python 3) zurück. Sie können nur einmal über einen Iterator iterieren. Der Iterator verschwindet nicht, wenn er keine Elemente mehr enthält, aber wenn er erneut durchlaufen wird, werden 0 Elemente zurückgegeben. Wenn Sie eine Liste wünschen, rufen Sie list auf:

%Vor%     
user2357112 21.07.2013 21:45
quelle

Tags und Links