2017-02-28 5 views
0
import os; 
import sys; 
import random; 


particle_list = [[-1, float(1)/100]] * 20; 
print particle_list; 

for i in range(0, len(particle_list)): 

    a = random.randint(0, 10); 
    particle_list[i][0] = a; 
    print str(a); 

    print particle_list[i][1]; 
    particle_list[i][1] *= 2; 
    print particle_list[i][1]; 
    print; 

Wenn Sie das Ergebnis in der particle_list ausdrucken, sind alle Ergebnisse gleich. Kann jemand helfen ?Zuweisung Fehler in der Liste der Liste Python

+0

dies das Ergebnis von meinem Terminal ist: [[6, 10485,76], [6, 10485,76], [ 6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76], [6, 10485.76] , [6, 10485.76]] – Ocean

+0

Wenn Sie die Liste erstellen, versuchen Sie das Listenverständnis. 'particle_list = [[random.randint (0, 10), float (2)/100] für i im Bereich (20)]' – spazhead

+0

Ich versuche nicht, die Liste zu erweitern. Könnten Sie mir bitte sagen, was mit dem Code, den ich in der Frage angehängt habe, nicht stimmt? es scheint eine sehr Standardaufgabe – Ocean

Antwort

2

Ändern Sie Ihre particle_list Erklärung:

particle_list = [[-1, float(1)/100] for i in range(20)]

Die Art und Weise Sie derzeit Ihre Liste generieren schafft den Rest der Elemente in der Liste als Verweise auf den ersten Punkt. Dieser Code generiert für jedes Element in der Liste verschiedene Listen, keine Verweise.

Es wird auch empfohlen, dass Sie nicht Semikolons in Ihrem Code nicht verwenden, da sie nicht sehr pythonic sind

+0

groß! es funktioniert perfekt. Danke für deine Hilfe und deinen Vorschlag. – Ocean