我试图解决问题,但遇到问题。
当我这样做时:
arr=[[[0]*5]*5]
我明白了:
[[[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]]]
但是当我尝试选择一个元素时:
arr[0][0]
它返回:
[0, 0, 0, 0, 0]
为什么?
答案 0 :(得分:6)
只需移除外部[]
:
arr=[[0]*5]*5
然而,这是创建嵌套列表的不好方法。最好使用:
arr = [[0 for _ in range(5)] for _ in range(5)]
这样你就不会被"shared reference problem"咬伤。
答案 1 :(得分:0)
你有一对额外的方括号。试试arr = [[0]*5]*5
。
答案 2 :(得分:0)
你有一对额外的括号。
尝试改为:
arr = [[0] * 5] * 5
我们可以通过分解您的代码来证明这一点:
arr= [ [ [ 0 ] * 5 ] * 5]
我们将最内层压缩为:arr = [ [ [0]*5 ] * 5]
,返回:
[ [[0, 0, 0, 0, 0]] * 5]
现在内部部分返回:
[[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]]
如您现在所需的结果,我们现在看到不再需要其余的括号。
答案 3 :(得分: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,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,0]]]
省略额外的括号。
arr=[[0]*5]*5
答案 4 :(得分:0)
arr = [[0]*5]*5 #will work
因此arr = [[[0]*5]*5]
相当于另一个列表中的arr = [your required arr]