Python中的集合

集合是Python提供的内置数据结构
与列表、字典一样都属于可变类型的序列
集合是没有value的字典
只能存储不同的值
在这里插入图片描述

集合的创建方式
  • 直接{}
    s={'hello','world',1314}
  • 使用内置函数set()
s=set(range(6))
print(s)
print(set([3,4,53,56]))
print(set((3,4,43,435)))
print(set('Python')
print(set({124,3,4,4,5}))
print(set())
集合元素的判断操作

in或者not in

s = {1, 2, 3, 4, 5, 6, 99, 7, 100}
print(s) # {1, 2, 3, 4, 5, 6, 99, 7, 100}
print(1 in s) # True
print(10 in s) # False
print(20 not in s) # True
集合元素的新增操作
  • 调用add()方法,一次添加一个元素
s = {1, 2, 3, 4, 5, 6, 7}
s.add(8)
print(s) # {1, 2, 3, 4, 5, 6, 7, 8}
  • 调用update()方法至少添加一个元素
    update(元组/集合/列表)
s = {1, 2, 3, 4, 5, 6, 7}
s.update({8,9})
print(s) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
集合元素的删除操作
  • remove()
    调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError
  • discard()
    调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常
  • pop()
    调用pop()方法,一次只删除一个任意元素,不能指定元素
  • clear()
    clear()方法,清空集合
集合间的关系
  • 两个集合是否相等
    可以使用运算符==或!=进行判断
  • 一个集合是否是另一个集合的子集
    可以调用方法issubset()进行判断
s1 = {1, 2, 3}
s2 = {1, 2, 3, 10}
print(s1.issubset(s2)) # true
  • 一个集合是否是另一个集合的超集
    可以调用方法issuperset()进行判断
s1 = {1, 2, 3}
s2 = {1, 2, 3, 10}
print(s2.issuperset(s1)) # true
  • 两个集合是否没有交集
    可以可以调用isdisjoint进行判断
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
s3 = {4, 5, 6}
print(s2.isdisjoint(s1)) # False 意思是有交集
print(s2.isdisjoint(s2)) # True 意思是有交集
  • 交集
    返回两个集合相同的部分
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
print(s1.intersection(s2)) # {1, 2, 3}
  • 并集
    返回两个集合相同和不相同元素的集合
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
print(s1.union(s2)) # {1, 2, 3, 10, 11}
  • 差集
    返回两个集合相减的部分
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
print(s1-s2) # { 11 }
print(s1.difference(s2)) # { 11 }
  • 对称差集
    剔除两个集合都有的元素,剩下的元素组成一个新集合。
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
s1 = {1, 2, 3, 11}
s2 = {1, 2, 3, 10}
print((s2 - s1) | (s1 - s2)) # {10, 11}
print(s2.symmetric_difference(s1)) # {10, 11}
集合生成式

{ i*i for i in range(1,10) }

s = {i*i for i in range(1,10)}
print(s) # {64, 1, 4, 36, 9, 16, 49, 81, 25}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值