我们初始化一个嵌套着几个列表的列表,这里我们使用列表推导式:
board = [['_']*3 for i in range(3)]
print(board)
board[1][2] = 'X'
print(board)
结果如下:
[['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
[['_', '_', '_'], ['_', '_', 'X'], ['_', '_', '_']]
可以看出三个列表指向的不是同一个对象
但是如果用另一种方法,看上去很方便,实则是错误的:
weird = [['_'] * 3] * 3
print(weird)
weird[1][2] = 'O'
print(weird)
从结果可以看出来第二种方法指的是同一个对象
还有这中本质也是错误的
rwo = ['_']*3
board = []
for i in range(3):
board.append(row)
将同一个对象追加到board中,很明显这是错误的。