在 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 是属性,那么读取它们会产生副作用。优化器如何在动态类型语言中知道这一点?
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 是属性,那么读取它们会产生副作用。优化器如何在动态类型语言中知道这一点?