将多个变量设置为相同:添加到一个变量添加到多个
Set many variables to the same: Adding to one variable adds to many
我想高效地将一堆变量设置为一个空列表。但是,使用这种方法,对一个变量的操作似乎适用于所有:
>>> r1,r2,r3,r4,r5,r6,r7,r8=[[]]*8
>>> r1
[]
>>> r1+=[2]
>>> r1,r2
([2], [2])
这是为什么?另外,让每个变量独立的最有效方法是什么?
[[]]*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)]
我想高效地将一堆变量设置为一个空列表。但是,使用这种方法,对一个变量的操作似乎适用于所有:
>>> r1,r2,r3,r4,r5,r6,r7,r8=[[]]*8
>>> r1
[]
>>> r1+=[2]
>>> r1,r2
([2], [2])
这是为什么?另外,让每个变量独立的最有效方法是什么?
[[]]*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)]