a = 2
b = 3
c = 4
x = y = z = [0 for i in xrange(a*b*c)]
有没有一种方法可以在一行中初始化x,y,z (因为我不想在每个列表初始化时将a,b和c相乘),单独的0列表。在上面的if中更新了x,那么y和z也会同时更新同样的更新。
答案 0 :(得分:3)
只需使用其他理解并将其解压缩:
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
。
答案 1 :(得分:0)
看看你的陈述意图而不是“一线”要求:
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是属性,因此阅读它们会产生副作用。优化器怎么能用动态类型语言知道呢?