我有一个简单的代码,它基本上只是创建一个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]]]
每次你这么做
您将引用附加到相同的列表,而不是复制它。所以当你修改其中一个列表时,你就是在修改所有的列表。当你这么做的时候也会发生同样的事情:
您需要在循环中创建新列表。你知道吗
number[:]
生成number
列表的浅拷贝。你知道吗我认为您的问题是,列表中的每个单元格都指向同一个(python)对象,即“number”。所以你有一个列表,基本上指向同一个对象。你知道吗
现在
tries[0][0].append(1)
在所有列表中的单个对象后面加上一个“1”,这就是您看到的。你知道吗我会选择一个numpy数组:
所有的事情都像你想象的那样,把你的可能性编码成T/F向量
相关问题 更多 >
编程相关推荐