将许多变量设置为相同:添加到一个变量会增加许多变量

时间:2015-01-01 23:42:19

标签: python list

我想有效地将​​一堆变量设置为空列表。但是,使用此方法,对一个变量的操作似乎适用于所有:

>>> r1,r2,r3,r4,r5,r6,r7,r8=[[]]*8
>>> r1
[]
>>> r1+=[2]
>>> r1,r2
([2], [2])

这是为什么?另外,使每个变量独立的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

执行[[]]*8会创建一个包含对同一列表对象的八个引用的列表。这就是为什么当你更新它们时它们都会受到影响。要制作八个唯一列表,请使用generator expression

r1,r2,r3,r4,r5,r6,r7,r8 = ([] for _ in range(8))

您也可以使用list comprehension

r1,r2,r3,r4,r5,r6,r7,r8 = [[] for _ in range(8)]