如何在python中创建独立集列表?

时间:2013-07-27 23:23:29

标签: python

我有一个列表需要包含可变数量的独立集合。 当我运行以下代码时,我想将字符串“testing”添加到第一组代码中。

numberOfSets = 3    
test = [set()]*numberOfSets
test[0].add("testing")
print test

但是,当我打印test时,它会显示三个完全包含测试的相同集合。如何设置列表以便我可以单独访问每个集?

2 个答案:

答案 0 :(得分:4)

你可以做到

test = [set() for _ in xrange(numberOfSets)]  # use 'range' in Python 3.x

[set()]*x创建一个包含相同集合实例的x的列表,而上面的解析会根据需要在每次迭代时创建一个新的独立集合。

一般情况下,每当您将元素可变的列表相乘时,您应该非常谨慎。

答案 1 :(得分:4)

执行[set()]*3时,会创建三个引用同一对象的集合,因此当您更改一个值时,其他值会更改。改为使用列表推导:

>>> numberOfSets = 3   
>>> test = [set() for _ in xrange(numberOfSets)]
>>> test[0].add("testing")
>>> print test
[set(['testing']), set([]), set([])]