2017-02-28 40 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; 

如果您打印出結果,則在particle_list中,所有結果都是相同的。誰能幫忙?列表python中的賦值錯誤

+0

這是從我的終端結果:[[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

製作列表時,嘗試列表理解。 '我在range(20)中爲'particle_list = [[random.randint(0,10),float(2)/ 100]' – spazhead

+0

我不想展開這個列表。那麼你能否告訴我在問題中附上的代碼有什麼問題?它似乎是一個非常標準的任務 – Ocean

回答

2

更改您的particle_list聲明:

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

當前正在生成列表的方式在列表中創建的第一個項目引用的項目的其餘部分。此代碼將爲列表中的每個項目生成不同的列表,而不是引用。

此外,還建議你不要在你的代碼中使用分號,因爲他們不是很Python的

+0

太棒了!它完美地工作。感謝您的幫助和建議。 – Ocean