如何每次将一个集合添加到循环中的集合

时间:2019-03-22 21:36:53

标签: python python-3.x set

我试图编写一个程序,每次都向一个集合中添加一个不同的集合,所以我尝试了这一点:

for i in range (5):
    Set = set()
    Set.update(set(str(i)))

但不幸的是,当我print (Set)时,我得到了这个结果:{'1', '4', '2', '0', '3'}当我期望{{'1'}, {'4'}, {'2'}, {'0'}, {'3'}}时。因为如果最后一行是Set.add(str(i))而不是Set.add(set(str(i))),则我得到的结果应该是输出。 那么为什么以及如何编写实现此目的的代码呢?!

注意:我根据对@martineau的建议进行了编辑。如果这是一个不好的行为,那么请取消编辑并找回我的旧问题,而不是再次否决该问题。

1 个答案:

答案 0 :(得分:2)

set对象本身是可变的,因此它们不能被散列(项目必须是可散列的,以便能够将它们添加到集合中)。 OTOH,如果您不想修改空集,则可以实例化一个frozenset对象:

Set = set()
Set.add(frozenset())

# Set
{frozenset()}

frozenset与集合完全一样,但是一旦创建就无法修改。