Python的乘法列表

时间:2016-03-22 11:21:34

标签: python-2.7 set

当我这样做时

>>> a = [1]*3
>>> a
 [1,1,1]
>>> a[0] = a[0]+1
>>> a
 [2,1,1]

这是完全没问题的,但是当我对集合执行相同操作时,请执行以下操作

>>> a = [set()]*3
>>> a
[set([]), set([]), set([])]
>>> a[0].add(1)
>>> a
 [set([1]), set([1]), set([1])]

这是一个非常奇怪的行为,对此有何解释?

1 个答案:

答案 0 :(得分:0)

这种行为的最合乎逻辑的解释是,它将所有3个set()视为指向1个set的指针,你是否尝试在将它们添加到列表之前声明这些集合然后改变它们?