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初始化所有元素.我认为我在访问二维数组时遇到了问题.
另外,请告诉我如何使用两个循环来访问二维数组的所有元素..我的下一步...
谢谢.
您的数组初始化不正确.初始化2d数组的正确方法是:
bc = [[0 for i in xrange(n + 1)] for i in xrange(n + 1)]
Run Code Online (Sandbox Code Playgroud)
这是一个常见的错误,但*运算符将指针复制到列表而不是复制列表,所以虽然看起来你有一个2d列表,但实际上你有一个指向同一列表的指针列表.