Seite 1 von 2

Verfasst: Donnerstag 7. Juni 2007, 23:07
von BlackJack
Ein ganz normaler Name wie `spam`, `x`, `foo` usw.

Verfasst: Donnerstag 7. Juni 2007, 23:15
von birkenfeld
Ein ganz normaler Name, der vom interaktiven Prompt in die Globals eingetragen wird.

Verfasst: Donnerstag 7. Juni 2007, 23:28
von rolgal_reloaded
@b und b:-)

Danke, bei der Gelegenheit:

Ich habe mir izip ein bisschen angeguckt - das Beispiel im Wiki.
Nun wenn man das Iteratorobjekt erzeugt und gleich list(_) eingibt, dann sieht man eigentlich die ganze Liste.

Sie ist also doch komplett vorhanden. Muss sie von der Logik her auch, aber wie kann es dann zu einem Performancevorteil gegenüber zip() kommen?

Die Frage bezieht sich eigentlich auf alle Iteratorgeschichten.

Klar was ich meine? Schwierig diese Frage zu forumulieren
:?

LG

rolgal_reloaded

Verfasst: Donnerstag 7. Juni 2007, 23:37
von Sr4l
okay wärs ne operator würde folgendes gehen: kritik angenommen ;-)

ihr seit aber auch immer sehr genau bei so etwas.

Verfasst: Freitag 8. Juni 2007, 07:54
von BlackJack
@rolgal_reloaded: Wenn man sofort `list()` darauf anwendet, dann hat man natürlich keinen Vorteil gegenüber `zip()`. Auf der Wikiseite ging's ja aber auch darum zu zeigen, was in dem Iterator "drinsteckt". Und da ist `list()` die einfachste Methode den komplett zu zeigen.

Verfasst: Freitag 8. Juni 2007, 08:06
von mkesper
rolgal_reloaded hat geschrieben: Ich habe mir izip ein bisschen angeguckt - das Beispiel im Wiki.
Nun wenn man das Iteratorobjekt erzeugt und gleich list(_) eingibt, dann sieht man eigentlich die ganze Liste.

Sie ist also doch komplett vorhanden. Muss sie von der Logik her auch, aber wie kann es dann zu einem Performancevorteil gegenüber zip() kommen?
Die Liste wird in dem Moment erzeugt, in dem du list(_) ausführst.
Sie ist keineswegs vorher vorhanden, es ist nur ein Mechanismus zur Erzeugung der Liste (Generator) vorhanden. Daher die Vorteile der Generatoren.
Willst du normalerweise auf die Liste zugreifen, dann mußt du das Generatorobjekt "benennen":

Code: Alles auswählen

>>> from itertools import izip, islice
>>> generator = izip([1, 2, 3], ['a', 'b', 'c'])
>>> generator
<itertools.izip object at 0x00AC2E18>
>>> list(generator)
[(1, 'a'), (2, 'b'), (3, 'c')]

Verfasst: Freitag 8. Juni 2007, 11:19
von rolgal_reloaded
@BlackJack, mkallas

Alles Klar :!: :!: Ist ja ganz logisch. Ich war durch die Darstellung zunächst verwirrt.

LG

rolgal_reloaded

Verfasst: Freitag 8. Juni 2007, 12:28
von mkesper
rolgal_reloaded hat geschrieben:Alles Klar :!: :!: Ist ja ganz logisch. Ich war durch die Darstellung zunächst verwirrt.
Ich fand auch, es war zuviel auf einmal. Habe daher das Beispiel im Wiki entsprechend geändert. Wenn jemand einen besseren Namen als "generator" weiß, nur zu!