Seite 1 von 1

iterierte liste zur Laufzeit erweitern

Verfasst: Donnerstag 24. November 2011, 15:15
von mzh
Liebes Forum
Ist es konsistent, dass eine Liste zur Laufzeit erweitert wird, wenn gleichzeitig darüber iteriert wird?

Code: Alles auswählen

a = range(10)
for i in a:
    a.append(i)
Hier hängt er sich auf..

Re: iterierte liste zur Laufzeit erweitern

Verfasst: Donnerstag 24. November 2011, 15:44
von deets
Natuerlich haengt er sich auf. Du hast ja auch eine Endlos-Schleife programmiert.

Generell ist es schlechter Stil, Collections, auf denen man arbeitet, gleichzeitig zu veraendern. Ausnahmen bestaetigen die Regel.

Re: iterierte liste zur Laufzeit erweitern

Verfasst: Donnerstag 24. November 2011, 23:37
von derdon
Iteriere also über eine Kopie von a, wenn du a verändern möchtest.

Re: iterierte liste zur Laufzeit erweitern

Verfasst: Freitag 25. November 2011, 10:15
von snafu
mzh hat geschrieben:

Code: Alles auswählen

a = range(10)
for i in a:
    a.append(i)
Wenn die 10 Elemente von `a` durchlaufen wurden, hast du wieder 10 neue Elemente an `a` drangehangen. Diese werden also auch noch durchlaufen und hängen dabei wieder 10 neue dran, usw.