Python集合

Python内置两种集合类型,一种是可变的set类型,一种是固定的frozenset。集合类型可以理解为非序列类型,也就是说集合中的元素都是乱序的,因此set类型是不支持索引的,其还有个特性就是内部元素都是独一无二的,因此可以用来进行去除重复的元素。集合也支持比较,支持|、&、^等。下面分为几个部分对其进行总结:
1、集合的创建
  集合中的的元素必须是可哈希的,也就是不可变的,其具有唯一的hash值,例如列表这样可变的数据类型不能作为集合的元素。但是集合本身可以添加和删除元素。

#以{}方式创建,内含可哈希的对象的引用
s = {} #创建空集合
s = {1,2,"This is s1",('a','b')}
#错误 s1 = {[1,2,3]}不可创建,列表是可变的

#以set函数创建
s1 = set() #创建空集合
s1 = set("hello") #s1 有可能== {'h','e','l','o'},也不一定是这样,因为集合是乱序的,与刚开始创建无关
s1 = set([1,2,3,4,1,2]) #将列表转换为集合并且去除多余的重复元素 s1 有可能== {1,2,3,4}

2、集合对象内置方法

s = {1,2,"apple",('f','f','l','y')}
#s.add(i)方法,将i加入到集合s中,如果i已经存在,那么不改变s
s.add("orange")
s.add("apple") #不改变s

#s.clear()移除集合s中的所有项,s变为空集合

#s.copy()返回集合s的浅拷贝,浅拷贝与深拷贝的差别在于递归的改变元素值影不影响原始对象
s1 = s.copy()
s1.add(3) #s1中增加元素3,s中并未增加

#s.difference(t) 等价于s-t,返回一个新集合,其元素包含在s中,但是不在t中
t = {2,3}
s1 = s.difference(t) #返回新的集合s1,s1中去除2这个对象引用

#s.difference_update(t) 相当于s -= t.并不返回新集合,而是在s上面进行更改,其他的与s.difference()一样

#s.disscard(i),如果i存在于s中,就从s中移除i,如果i不存在那么不做任何改变

#s.remove(i),基本同s.discard(),但是如果i不存在,那么触发KeyError异常,异常提示为i

#s.intersection(t),相当于s&t,返回一个新集合,元素为s和t的交集,也就是元素同时存在于s和t,没有就返回空集合

#s.intersection_update(t),s &= t,与上基本相同,只不过不返回新的集合,而是在s上做改变

#s.isdisjoint(t),如果s和t中没有相同的项就返回True

#s.issubset(t),判断s <=? t 如果是就返回True

#s.issuperset(t),判断s >=? t 如果是就返回True

#s.pop() 返回s中的一个随机项,如果s为空就触发KeyError异常

#s.symmetric_difference(t),相当于s^t,返回一个新的集合,包含s和t中的每个数据项,但是不包含同时在s和t中的数据项

#s.symmetric_difference_update(t),相当于s ^= t

s.union(t),相当于s|t,返回一个新的集合,包含s中所有数据,以及t中不在s中的数据

s.update(t),相当于s |= t

3、集合生成式

#与列表生成式一样
s = {i ** 2 for i in range(1,10)} #生成的s是乱序的

4、固定集合
  固定集合用frozenset()创建,创建后的集合将不可改变,凡是不改变自身的set对象方法都可用于frozenset()创建的集合对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值