python数据结构之集合

集合set

思维导图:
这里写图片描述

集合的引入:

  • python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(并), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
  • 当要去除列表中的重复元素时,可将他们转换成集合,然后再转化成列表。
    这里写图片描述
    这里写图片描述
    这里写图片描述

这里写图片描述

集合的定义

  • 集合的创建集合是一个无序不重复元素的集
  • 不可变的数据类型一定可哈希;hash()内置函数可以判断某个类型是否可哈希;

s={int | str | tuple | float | long }
必须为不可变数据类型!
列表和字典都是可变的,可变是指改变值时,改变的是id中的值,而不是指向所改变值的id。
这里写图片描述
这里写图片描述

集合的函数:

这里写图片描述

集合的关系测试

  • s.intersection(s1[,..]) ##交集,不改变s
    (s & s1 & …..)
  • s.intersection_update(s1[,..]) ##交集,改变s
  • s.union(s1[,…]) ##并集,不改变s
    (s | s1 | ….)
  • s.difference(s1[,..]) ##差集,不改变s
    (s-s1)
  • s.difference_update(s1[,..]) ##差集,改变s
  • s.symmetric_difference(s1) ##对等差分,两个差集的并
    (s ^ s1)
  • s.symmetric_difference_update(s1) ##对等差分,改变s
  • s.isdisjoint(s1) ##s和s1是否没有交集,有,返回False,无,返回True
  • s.issubset(s1) ##s是否为s1的子集,返回bool
  • s.issuperset(s1) ##s是否为s1的父集,返回bool
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {1, 2}
s4 = {5}

print "s1,s2,s3的交集:", s1.intersection(s2, s3)
print "s1,s2,s3的交集:", s1 & s2 & s3
print "s1,s2,s3的并集:", s1.union(s2, s3)
print "s1,s2,s3的并集:", s1 | s2 | s3
print "s1-s2的差集:", s1.difference(s2)
print "s1-s2的差集:", s1 - s2
print "s1-s2-s3的差集:", s1.difference(s2, s3)
print "s1-s2-s3的差集:", s1 - s2 - s3
print "s2-s1的差集:", s2.difference(s1)
print "s1和s2的对等差分:", s1.symmetric_difference(s2)
print "s1和s2的对等差分:", s1 ^ s2
print "s2和s1的对等差分:", s2.symmetric_difference(s1)

# s.isdisjoint(s2)  如果有交集,返回False;否则,返回True;
print "s1和s4是否没有交集:", s1.isdisjoint(s4)

print "s3是否为s1的子集:", s3.issubset(s1)

print "s1是否为s3的父集:", s1.issuperset(s3)

集合的增删改查:

  • len(s) # set 的长度
  • x in s # 测试 x 是否是 s 的成员
  • 增加:
    s.add(1) ##添加元素1至s(1个元素)
    s.update(s1) ##将集合|列表|元组s1元素添加至s
  • 删除:
    s.remove(1), # 删除存在的元素1,如果不存在,直接报错;
    这里写图片描述
    s.discard(1) # 删除存在的元素1,如果不存在,do nothing;
    s.pop(), # 随即删除集合元素,不加任何参数;
  • 复制: s1 = s.copy() #s和s1的id不同
    这里写图片描述
  • 清空: s.clear()
  • 删除:del(s)

冻集(frozenset)

  • 冻住的集合,不能增删改;
  • frozenset(set)
  • set(frozenset)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值