itertools.product MemoryError
Verfasst: Montag 28. Februar 2011, 22:34
Sagt mal ist das wirklich so gewollt oder ein Design-Fehler ?
Ich bekomme desöfteren einen MemoryError beim Nutzen der "itertools.product"-Funktion.
In Anahme das die Funktion tatsächlich wie in der Doku aussieht:Ist auch klar warum bei einer hohen Anzahl ein MemoryError geworfen wird, da "result" schlicht zu groß wird.
Meine Frage ist jetzt: Warum wird hier "result" kein Generatorausdruck zugewiesen, gibt es dafür irgendeinen bestimmten Grund?
Ich bekomme desöfteren einen MemoryError beim Nutzen der "itertools.product"-Funktion.
In Anahme das die Funktion tatsächlich wie in der Doku aussieht:
Code: Alles auswählen
def product(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)Meine Frage ist jetzt: Warum wird hier "result" kein Generatorausdruck zugewiesen, gibt es dafür irgendeinen bestimmten Grund?