我有不同的嵌套列表:
a = [[] for e in range(6)]
b = [[] for e in range(6)]
c = [[] for e in range(6)]
鉴于这些列表具有相似的结构,是否可以同时(在一行中)分配它们? 我在想这样的事情:
a, b, c = [[] for e in range(6)] ...?...
我正在使用 Python 3
请您参考如下方法:
Python 有一种机制让多个变量 引用相同 对象,具有:
a = b = c = [[] for e in range(6)]
但你可能不想那样,因为现在a , b和 c引用同一个列表。因此,如果我们附加到 a ,那么该变化也反射(reflect)在 b 中和 c .
但是,我们可以使用 iterable 解包:
a, b, c = <b>[</b>[[] for e in range(6)] <b>for _ in range(3)]</b>
所以这里我们构建了一个包含三个列表的列表,然后我们解压那个列表到三个变量中,这样每个变量都有自己的子列表。
或者一般来说,如果你有一个特定的表达式需要计算 n 次,然后分配给 n 个变量,你可以使用:
x<i>1</i>, x<i>2</i>, x<i>n</i> = [<i><expr></i> for _ in range(<i>n</i>)]
这里 <expr> 当然应该替换为真实的表达式,变量 x<i>i</i>具有实变量。
