我们之前所学的集合可以往其中增加删除元素,使用上比较灵活,但我们也有一些时候需要固定集合的元素,不让集合出现变动,增加数据的稳定性,这时候就需要python中的frozenset不可变集合。那么如果我们试着去改变frozenset里的元素会出现什么情况呢?接下来再学习了简单不可变集合的概念后,我们会一起进行测试。
frozenset是不可变的,其内容在被创建后不能再改变,不像set集合,可以增加删除集合中的元素。因此可以被用作字典的键或其他集合的元素。
1. 传入一个可迭代对象,生成一个新的不可变集合
>>>a=frozenset(range(10)) >>>a frozenset({0,1,2,3,4,5,6,7,8,9}) >>>b=frozenset('IamaPythoner') >>>b frozenset({'y','I','','r','t','m','h','o','a','e','n','P'})
2. 不传入参数时,生成的空的不可变集合。
>>>c=frozenset() >>>c frozenset()
3.集合的元素必须为hashable。要表示由集合对象构成的集合,所有的内层集合必须为frozenset对象。
>>>f=frozenset() >>>f frozenset([]) >>>f=frozenset('asdf') >>>f frozenset(['a','s','d','f']) >>>f=frozenset([1,2,3,4]) >>>f frozenset([1,2,3,4]) >>>f=frozenset((1,2,3,4)) >>>f frozenset([1,2,3,4]) >>>f=frozenset({1:2,'a':2,'c':3}) >>>f frozenset(['a',1,'c'])
如果试图改变不可变集合中的元素,就会报AttributeError错误。
不可变集合,除了内容不能更改外,其他功能及操作跟可变集合set一样。
通过本篇学习frozenset不可变集合我们可以发现,如果强行更改其中的元素就会报错。其它的功能使用在set集合中已经讲过,这里就不过多叙述。