2017-05-25 5 views
0
for sublistas in matriz: 
    for espacios in matriz: 
     ran = random.choice([p_vivo, p_muerto]) 
     matriz.append(ran) 

I mit 2 zufälligen Entscheidungen mit einer Matrix versuchen: p_muerto oder p_vivo Das Problem ist, endet die Schleife nie. Ich denke, es ist so, weil es die Elemente der Matrix immer wieder überschreibt, so dass es unbegrenzt weiterläuft.for-Schleife nie mit einer Matrix endet

Was kann ich tun?

+0

Warum sind Sie zweimal auf die gleiche Matrix Looping? Was soll das gewünschte Ergebnis sein? – Barmar

+0

Fixieren Sie Ihre Einrückung. Die zweite 'for'-Schleife muss in der ersten eingerückt werden. – Barmar

+0

Die Einrückung ist in Ordnung. Es sieht auf dieser Seite einfach anders aus. – angelustt

Antwort

1

Ja, die Endlosschleife ist aufgetreten, weil Sie die ursprüngliche Matrix ändern und ein neues Element hinzufügen.

Sie können eine Kopie dieser Matrix erstellen und auf einer kopierten Matrix arbeiten - das Original bleibt sicher und wird nicht verändert.

Wenn Sie mit Original-Matrix arbeiten möchten - Sie können einfach die Kopie durchlaufen.

+1

Da er an die Matrix anhängen möchte, sollte er wahrscheinlich die Kopie überfliegen. – Barmar

1

Schleife über eine Liste von Listen, was Sie tun müssen:

for sublist in matriz: 
    for element in sublist: 

Und wenn Sie auf die Liste in der Schleife sind anhängt, sollten Sie über Kopien Schleife. Und Sie sollten nicht an die Top-Level-Liste anfügen, sollten Sie an eine Unterliste anhängen. Oder vielleicht sollten Sie neue Unterlisten erstellen und sie anhängen. Es ist nicht klar, was Ihr gewünschtes Ergebnis ist.

for sublist in matrix[:]: 
    for element in sublist[:]: 
     ran = random.choice([p_vivo, p_muerto]) 
     sublist.append(ran) 

Dies wird die Liste von 15x15 bis 15x30 ändern

Verwandte Themen