2016-03-22 17 views
0

当我做Python列表

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

这是完全正常,但是当我做套同样的iget以下

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

这是一个非常奇怪的行为,任何解释为了这?

回答

0

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