-1
input = [['0', '0', '0', '0', '0', '0', '3', '6', '8'], ['0', '0', '8', '5', '7', '0', '4', '0', '0'], ['6', '0', '0', '0', '0', '0', '7', '5', '0'], ['0', '0', '6', '4', '0', '7', '9', '0', '0'], ['0', '0', '4', '0', '8', '0', '0', '1', '6'], ['8', '0', '0', '0', '3', '0', '0', '0', '0'], ['0', '7', '9', '1', '0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0', '0', '8', '4', '0'], ['0', '0', '0', '0', '0', '0', '0', '2', '7']]

inputlock=[[False]*9]*9
for i in range(0,9):
    for j in range(0,9):
        input[i][j] = int(input[i][j])
        if input[i][j] == 0:
            inputlock[i][j] = True
        else:
            inputlock[i][j] = False

运行时: inputlock= [[True, True, True, True, True, True, True, False, False]*9]

我认为使用此代码 inputlock[0,6] 必须为 False。为什么它是真的,为什么它重复了 9 次(这是我在那里的第一篇文章,我的英语不好)谢谢大家!

4

1 回答 1

0

当您在列表文字上使用重复运算符时,您只是在重复对同一列表的相同引用,因此最终您只会获得最后一次迭代的结果。

所以而不是:

inputlock=[[False]*9]*9

使用列表推导来初始化输入锁:

inputlock=[[False] * 9 for j in range(9)]
于 2018-07-16T06:06:41.243 回答