2016-11-08 4 views
0

Ich habe ein Wörterbuch, und da ich es während des Listenverständnisses erstelle, kann ich auf die vorher erstellten Werte zugreifen?Im Verständnis der Python-Liste können wir frühere Werte betrachten, die während der Ausführung erzeugt wurden.

Beispiel:

h = {i:1+h[i-1] for i in range(1,100))} 
+0

Nr verwenden Und wenn Sie brauchen, dass eine Liste Verständnis nicht das richtige Werkzeug ist als per Definition bedeutet es das Element behandelt werden, unabhängig . Vielleicht werfen Sie einen Blick auf itertools-Funktionen wie ['accumulate()'] (https://docs.python.org/3/library/itertools.html#itertools.accumulate). – spectras

+0

Sie nennen es "Listenverständnis", aber Sie bauen Wörterbuch. Leider kann man es so nicht benutzen. Da die Variable h nur dann auf das neue dict-Objekt verweist, wenn es erstellt wurde, können Sie zuvor nicht darauf zugreifen. Sie können es mit einer for-Schleife tun. – quantummind

+0

Welche Python-Version? –

Antwort

1

Edit: Ich lese i:i + h[i-1] statt i:1 + h[i-1]. Letzteres ist immer gleich i:i außer im ersten Fall, wenn es 1+None ist

Dies tut, was Sie in einem Wörterbuch Verständnis wollen. Benötigt Python 3.2 oder höher:

from itertools import accumulate 
h = {i:v for i,v in enumerate(accumulate(range(100)))} 

sonst diese

def accumulate(r): 
    next_value = 0 
    for i in r: 
     next_value = next_value + i 
     yield next_value 
+0

Nun, wirklich der erste Fall ist undefiniert. 'None' ist vernünftig, aber es könnte alles sein. –

Verwandte Themen