为什么我不能使用此代码制作二维数组?

-1 python list

我试图解决问题,但遇到了问题.

当我这样做:

arr=[[[0]*5]*5]
Run Code Online (Sandbox Code Playgroud)

我明白了:

[[[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]]]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试选择一个元素时:

arr[0][0]
Run Code Online (Sandbox Code Playgroud)

它返回:

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

为什么?

MSe*_*ert 6

只需移除外部[]:

arr=[[0]*5]*5
Run Code Online (Sandbox Code Playgroud)

但是,这是创建嵌套列表的不好方法.最好使用:

arr = [[0 for _ in range(5)] for _ in range(5)]
Run Code Online (Sandbox Code Playgroud)

这样你就不会被"共享参考问题"所困扰.