当我这样做时
>>> 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])]
这是一个非常奇怪的行为,对此有何解释?
答案 0 :(得分:0)
这种行为的最合乎逻辑的解释是,它将所有3个set()视为指向1个set的指针,你是否尝试在将它们添加到列表之前声明这些集合然后改变它们?