Python中的三重数组
我有一个简单的代码,它基本上只是创建3D数组,然后在其中创建一个特定的数组。我不知道为什么,但它会附加这个3D数组中的每个数组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
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谢谢你的回答!从长远来看,我在数独解算器中使用这个函数,所以数组会更好一些。这个函数将开始将所有尝试过的数字添加到数组中,所以它不会尝试相同的数字两次。不过,谢谢你的建议,我以前从未听说过平面文件。:)