Python二维查询..

Alg*_*eek 1 python multidimensional-array

我在python中看到一个非常不寻常的行为..请让我知道我做错了什么!

bc = [[0]*(n+1)]*(n+1)

for i in range(n+1):
    bc[i][i] = 1

print (bc)        
Run Code Online (Sandbox Code Playgroud)

产量

[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)

我试图将二维数组的对角元素初始化为1,但它正在用1初始化所有元素.我认为我在访问二维数组时遇到了问题.

另外,请告诉我如何使用两个循环来访问二维数组的所有元素..我的下一步...

谢谢.

Cha*_* Ma 6

您的数组初始化不正确.初始化2d数组的正确方法是:

bc = [[0 for i in xrange(n + 1)] for i in xrange(n + 1)]
Run Code Online (Sandbox Code Playgroud)

这是一个常见的错误,但*运算符将指针复制到列表而不是复制列表,所以虽然看起来你有一个2d列表,但实际上你有一个指向同一列表的指针列表.