Wenn Sie len in der Liste eines Zip-Objekts ausführen, wird die ZIP-Datei gelöscht

8

Ich sehe ein merkwürdiges Verhalten, wenn ich mit der Funktion zip () arbeite. Wenn ich die folgende Operation ausführe len (list (z)) wo z ein Zip-Objekt ist, ist das Ergebnis 0 (was mir falsch scheint), und die Aktion scheint das Zip-Objekt zu löschen. Kann mir bitte jemand helfen, zu verstehen, was vor sich geht.

%Vor%

Danke, Ahmed.

    
Ahmed A 31.01.2013, 23:36
quelle

2 Antworten

11

In Python 3 ist zip ein Generator . Der Generator ist erschöpft, wenn Sie list(z) ausführen. Sie können eine Liste aus den vom Generator zurückgegebenen Werten erstellen und daran arbeiten.

%Vor%

Generatoren sind eine gute Sache. Sie erlauben uns, speichereffiziente Code in fast der gleichen Art und Weise zu schreiben, wir Code, der mit Listen beschäftigt schreiben würde. Um ein Beispiel aus dem verlinkten Wiki zu verwenden:

%Vor%

Könnte als Generator neu geschrieben werden, eine weitere Liste im Speicher zu vermeiden erstellen:

%Vor%     
bernie 31.01.2013 23:45
quelle
3

Um die vorherige Antwort zu vervollständigen, gibt es eine Python-Bibliothek mit dem Namen cardinality , um die Größe der Iterablen zu erhalten.

Ссылка

    
Eskapp 31.10.2016 16:35
quelle

Tags und Links