假设我想像这样制作一个空的 3x4 2d 数组。
x = [[0.0]*3]*4
但是,使用上面的代码,
print x[0] is x[1] # Output = True
意义,
x[1][1] = 5.0
print x # Output = [[0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 5.0, 0.0]]
为了绕过使用对同一列表的 4 个相同引用创建此列表,我一直在做类似的事情:
y = [[0.0]*3, [0.0]*3, [0.0]*3, [0.0]*3]
在哪里
print y[0] is y[1] # Output = False
y[1][1] = 5.0
print y # Output = [[0.0, 0.0, 0.0],
# [0.0, 5.0, 0.0],
# [0.0, 0.0, 0.0],
# [0.0, 0.0, 0.0]]
另一种方法是使用列表理解
z = [[0.0]*3 for x in range(4)]
但是,这看起来还是有点难看。
有没有办法使数组“y”或“z”在一个优雅的格式中所有引用都是唯一的,例如在“x”中使用列表上的乘法?