我想有效地将一堆变量设置为空列表。但是,使用此方法,对一个变量的操作似乎适用于所有:
>>> r1,r2,r3,r4,r5,r6,r7,r8=[[]]*8
>>> r1
[]
>>> r1+=[2]
>>> r1,r2
([2], [2])
这是为什么?另外,使每个变量独立的最有效方法是什么?
答案 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)]