我在 python 中看到了一个非常不寻常的行为。请告诉我我做错了什么!!
bc = [[0]*(n+1)]*(n+1)
for i in range(n+1):
bc[i][i] = 1
print (bc)
输出
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
我试图将二维数组的对角线元素初始化为 1,但它正在用 1 初始化所有元素。我认为我在访问二维数组时做错了。
另外,请告诉我如何使用两个循环来访问二维数组的所有元素..我的下一步..
谢谢。
请您参考如下方法:
您的数组初始化不正确。初始化二维数组的正确方法是这样的:
bc = [[0 for i in xrange(n + 1)] for i in xrange(n + 1)]
这是一个常见的错误,但 * 运算符将指针复制到列表而不是复制列表,因此虽然看起来你有一个二维列表,但实际上你有一个指向同一列表的指针的一维列表。
