Skip to main content
 首页 » 编程设计

Python二维查询..

2025年05月04日13del

我在 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)] 

这是一个常见的错误,但 * 运算符将指针复制到列表而不是复制列表,因此虽然看起来你有一个二维列表,但实际上你有一个指向同一列表的指针的一维列表。