Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的三重数组_Python_Arrays_Append - Fatal编程技术网

Python中的三重数组

Python中的三重数组,python,arrays,append,Python,Arrays,Append,我有一个简单的代码,它基本上只是创建3D数组,然后在其中创建一个特定的数组。我不知道为什么,但它会附加这个3D数组中的每个数组 def createTries(): number = [0] row = [] tries = [] for i in range (0,9): row.append(number) for i in range(0,9): tries.append(row) tries[0][0].ap

我有一个简单的代码,它基本上只是创建3D数组,然后在其中创建一个特定的数组。我不知道为什么,但它会附加这个3D数组中的每个数组

def createTries():
    number = [0]
    row = []
    tries = []
    for i in range (0,9):
        row.append(number)
    for i in range(0,9):
        tries.append(row)
    tries[0][0].append(1)

    print(tries)
    print(tries[0][0][1])
    return tries

createTries()
有谁能帮我把这个精确的数组加上去吗

编辑:注意到我忘了翻译几个整数。 我得到的答案是:

[0[0,1[0,1[0 0,1][[0,1[0,1][[0,1][[0,1][0,1[0,1,(0,1,(0,1 1[0,1][0,1[0,1[0,1[0,1[0,1][[0,1[0,1][[0,1,1][[0,1[0,1,1][[0,1,1],[0,1[0,1,(0,1,1,(0,1,(0,1,(0,1,(0,1][[0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1),0,1,0,1,0,1,0,1,[0,1],[0,1,[0,1],[0,1],[0,1,(0,1,(0,1,(0,1,(0,1,(0,1,0[0,1],[0,1],[0,1],[0,1],[0,1],[0,1],[0,1],[0,0,1[0,1 0,1[0,1[0,1],[[0,0,1],[0,1],[0,1,(0,1 0,1,[0,1,(0,1,0,1,(0,1,(0,1,1[0,0,1][[0,0,1],[0,1[0,1],[0,1,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1),[0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,(0,1,0,1,0,1,0,1,0,1,0,1,(0,1,0,1),[0,1,(0,1),[0,1,(0,1,(0,1,(0,1,0,1,0,1),0,1],[0,1],[0,1],[0,1]]

但我希望得到的是:

[0,1]、[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], [0], [0], [0], [0], [0], [0], [0], [0]], [[0], [0], [0], [0], [0], [0], [0],[0],[0]]

每次你这样做

row.append(number)
您将引用附加到同一列表,而不是复制该列表。因此,当您修改其中一个列表时,您将修改所有列表。执行此操作时,也会发生同样的情况:

tries.append(row)
您需要在循环中创建新列表

number = [0]
for i in range(9):
    row = []
    for j in range(9):
        row.append(number[:])
    tries.append(row)

number[:]
创建了一个简单的
number
列表。

我认为您的问题是,列表中的每个单元格都指向同一个(python)对象,即“number”。因此,您拥有的是一个列表列表,基本上指向同一个对象

现在
尝试[0][0]。追加(1)
在所有列表中的单个对象上追加一个“1”,这就是您看到的

我会选择一个numpy数组:

SudokuFiled = np.ones((9,9,9)).astype("bool")

<所有的事情都是按照你所想的那样来编码的,因为T/F向量

包括你得到的输出的细节和你所期望的输出。什么是RIDA?和PROVID?这个问题并不像它所说的那样完整。看起来你是在试图把数据放在一个非常嵌套的格式。也许你应该考虑一个“平面”。您的尝试列表…这将使以后更容易以另一种方式查看和旋转()@AndyG很抱歉弄得一团糟。我忘了翻译几个名字。但现在它们是正确的。还添加了输出。@麦哲伦88谢谢你的回答!从长远来看,我在数独解算器中使用这个函数,所以数组会更好一些。这个函数将开始将所有尝试过的数字添加到数组中,所以它不会尝试相同的数字两次。不过,谢谢你的建议,我以前从未听说过平面文件。:)