清单结果在Python中无法预期

时间:2018-07-16 05:48:43

标签: python-3.x list

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次 (这是我在那里的第一篇文章,我的英语也不太好)谢谢大家!

1 个答案:

答案 0 :(得分:0)

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

所以代替:

0 issue "letsencrypt.org"

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

inputlock=[[False]*9]*9