Python中的三重数组

2024-05-28 23:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的代码,它基本上只是创建一个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, 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, 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, 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]]]


Tags: 代码in编辑numberforreturndefrange
2条回答

每次你这么做

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”。所以你有一个列表,基本上指向同一个对象。你知道吗

现在tries[0][0].append(1)在所有列表中的单个对象后面加上一个“1”,这就是您看到的。你知道吗

我会选择一个numpy数组:

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

所有的事情都像你想象的那样,把你的可能性编码成T/F向量

相关问题 更多 >

    热门问题