【发布时间】:2017-10-28 03:30:43
【问题描述】:
我在python中这样定义一个二维数组:
a = [[1]*3]*3
我想将一个元素指定为 2,例如:
a[1][1] = 2
然而,a 原来是:
[[1,2,1],[1,2,1],[1,2,1]]
而不是我的想法:
[[1,1,1],[1,2,1],[1,1,1]]
有人知道吗?
【问题讨论】:
标签: python-3.x
我在python中这样定义一个二维数组:
a = [[1]*3]*3
我想将一个元素指定为 2,例如:
a[1][1] = 2
然而,a 原来是:
[[1,2,1],[1,2,1],[1,2,1]]
而不是我的想法:
[[1,1,1],[1,2,1],[1,1,1]]
有人知道吗?
【问题讨论】:
标签: python-3.x
您可以使用列表推导来做到这一点:
a=[[1 for _ in range(3)] for _ in range(3)]
a
Out[32]: [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
a[1][1]=2
a
Out[34]: [[1, 1, 1], [1, 2, 1], [1, 1, 1]]
【讨论】:
我认为括号内有括号会使 None 值项为 0 并且它首先乘/解包内部乘法,因此您的参考 a[1][1] 指的是元列表 [[1 ,1 1]*3] 并在第二次乘法发生之前将第二个元素的第二个元素转换为 2,因为操作顺序。
【讨论】: