我试图编写一个程序,每次都向一个集合中添加一个不同的集合,所以我尝试了这一点:
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的建议进行了编辑。如果这是一个不好的行为,那么请取消编辑并找回我的旧问题,而不是再次否决该问题。
答案 0 :(得分:2)
set
对象本身是可变的,因此它们不能被散列(项目必须是可散列的,以便能够将它们添加到集合中)。 OTOH,如果您不想修改空集,则可以实例化一个frozenset
对象:
Set = set()
Set.add(frozenset())
# Set
{frozenset()}
frozenset
与集合完全一样,但是一旦创建就无法修改。