在 python 中初始化多个列表

Initialize multiple lists in python

a = 2
b = 3
c = 4
x = y = z = [0 for i in xrange(a*b*c)]

有没有一种方法可以在一行中初始化x,y,z(因为我不想为每个列表初始化乘以a,b和c ), 作为单独的 0 列表。在上面,如果 x 被更新,那么 y 和 z 也会同时更新并进行相同的更改。

只需使用另一个理解并解压它:

x, y, z = [[0 for i in xrange(a*b*c)] for _ in xrange(3)]

请注意 [0 for i in xrange(a*b*c)] 等同于更简单的 [0] * a*b*c

查看您陈述的意图而不是 'one line' 要求:

a = 2
b = 3
c = 4
x = [0 for i in xrange(a*b*c)]
y = x [:]
z = x [:]

不确定优化器是否足够聪明,可以避免在以下位置重复乘法:

x, y, z = [[0 for i in xrange(a*b*c)] for _ in xrange(3)]

假设 a、b 和 c 是属性,那么读取它们会产生副作用。优化器如何在动态类型语言中知道这一点?