2011-12-10 161 views

回答

5

它們在事實上沒有共同之處。第二個是一個numpy的二維數組。首先是沒有什麼有用的 - 它的100項的數組,其中每一個是100個零的單一陣列的引用:

table = [[0]*100]*100 
table[1][0]=222 
print table[0][0] 

這版畫「222」!

table = numpy.zeros([100,100], int) 
table[1][0]=222 
print table[0][0] 

這打印'0'!

5

好吧,一次,第一個是危險錯了。看到這一點:

In [8]: table = [[0]*2]*10 

In [9]: table 
Out[9]: 
[[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0], 
[0, 0]] 

In [10]: table[0][1] = 5 

In [11]: table 
Out[11]: 
[[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5], 
[0, 5]] 

這是因爲你宣佈table的方式,分榜單是重複一遍。有關正確執行此操作的信息,請參閱this FAQ