Python 多维数组

 Python 中初始化一个8*8的数组时,应该使用:

 

Chess = [[0 for column in range(8)] for row in range(8)]

 

 

而初始化一个一维数组的时候,可以用:

 

Queen = [0] * 8

 

但是初始化二维数组,也就是:

Chess = [[0] * 8] * 8

 

事实上得到的与前面不同,

 

因为[0] * 8一个一维数组的对象,

* 8 是把对象的引用复制了 8 次,

 

如果修改 Chess[0][0]:

 

Chess[0][0] = 'luaedge'
print Chess

 

得到的是:

 

[['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0], ['luaedge', 0, 0, 0, 0, 0, 0, 0]]

 

如果用第一种的类似写法:

 

Chess = [[0] * 8 for row in range(8)]
Chess[0][0] = 'luaedge'
print Chess

 

得到的将是:

 

[['luaedge', 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]]

 

这是预想中的结果。

 

 

 

 

 

 

 

 

你可能感兴趣的:(python)