Python中这两个数组声明有什么区别?
table = [[0]*100]*100
table = numpy.zeros([100,100], int)
答案 0 :(得分:5)
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'!
答案 1 :(得分: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。