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]]
这是预想中的结果。