Skip to main content
 首页 » 编程设计

python之2D Python 列表将有随机结果

2025年05月04日16hnrainll

我创建了一个 10 x 10 的游戏板。这是一个二维列表,里面还有另一个 2 的列表。我用了 board = [[['O', 'O']] * 10 for x in range(1, 11)]。所以它会产生类似

的东西

['O', 'O'] ['O', 'O']...

['O', 'O'] ['O', 'O']...

稍后我想将单个单元格设置为具有“C”我使用 board.gameBoard[animal.y][animal.x][0] = 'C' board 是 gameBoard 所在的类,而 animal 是一个游戏 block ,x 和 y 只是整数。有时它会工作并且指定的单元格将变为 ['C', 'O'],其他时候它会用 ['C', 'O']['C', 'O'][' 填充整行C', 'O']['C', 'O'] 有谁知道为什么会这样?

请您参考如下方法:

基本上,您正在创建对同一个列表的一大堆引用——为了演示,请考虑:

[ [] ]*10 

如果打印id:

>>> print map(id,[ [] ]*10) 
[958336, 958336, 958336, 958336, 958336, 958336, 958336, 958336, 958336, 958336] 

你会发现它们都是一样的:

最简单的解决方法是执行如下操作:

[ [['O','O'] for _ in range(10)] for x in range(1, 11) ]