python中set与frozenset区别整合

同多数语言一样,set表示集合,最重要的特性就是无序,所以Python中的set不支持indexing,但支持len(set),x in set 等操作。

set有两种类型,set和frozenset。

set是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。

frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。

举例如下

fza=frozenset(‘a’)
adict={fza:1,’b’:2} #正确
setb=set(‘a’)
bdict={setb:1,’b’:2} #错误
还有一点需要注意,不管是set还是frozenset,Python都不支持创建一个整数的集合。

seta=set(1) #错误
setb=set(’1’)#正确

python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们初中数学学的集合的非常的相似。
1先看下python 集合 类型的不重复性
这方面做一些去重处理非常的好,比如我们要处理一些数据,想把重复的数据给
去掉,然后在操作的话,可以把它转换成集合类型,然后在由集合类型转换成其他的类型。
a = [2,3,4,2,1]
我们最终要实现的效果是:a = [1,2,3,4]
那我们要怎么实现呢。
1观察下这个列表,我们发现列表里有重复的元素存在,所以我们第一想到的就是去掉列表里的重复元素。
a = set(a)
print a
集合a的结果是:set([1, 2, 3, 4])
下一步要实现排序,我们又想到了一个比较简单的方法,因为集合没有排序方法,而列表有排序的方法,所以我们们把它转换成python 列表 的类型,调用列表的排序方法。
a = list(a)
a.sort()
print a
列表a的结果是:[1,2,3,4]
2 union(联合), intersection(交), difference(差)
a = set(‘abcde’)
b = set(‘bdcf’)“
求集合的交集:
a & b
结果是:set([‘c’, ‘b’, ‘d’])
求差集:
a - b
结果是:set([‘a’, ‘e’])
求联合:
a|b
结果是:set([‘a’, ‘c’, ‘b’, ‘e’, ‘d’, ‘f’])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值