Python的集合

概念

  • 一种内置数据结构
  • 与列表、字典一样是可变类型数据结构
  • 类似字典使用大括号,但是没有value仅有key
  • 使用哈希函数确定位置,所以具有无序性

创建方式

直接方法

创建的元素不允许重复,有重复也只保留一个

s={98,'asd',False,98,10}
print(s)

在这里插入图片描述

使用set() 函数

s1=set([22,33,44,55,22,66])         #中括号是列表,将列表转换成集合,去掉重复元素
print('s1: ',s1)
s2=set((11,22,33,44,55,22,33))      #括号是元组,将元组转换集合
print('s2: ',s2)
s3=set('python')                    #将字符串转换成集合,各字符通过哈希函数,无序
print('s3: ',s3)
s4=set({11,22,33,44,22,33})         #将一个集合转换成集合
print('s4: ',s4)

如注释所言↑
在这里插入图片描述

声明空集合

不能直接用大括号定义: s5={ }是错误的

需要用s5 = set()

集合的相关操作

判断操作

直接用 in 和 not in
print ( 11 in s2 )

增加操作

  • add() 添加一个元素
s2.add(80)
print(s2)

在这里插入图片描述

  • update() 添加至少一个元素

多种情况:

s2.update({200,300})    #添加集合
print(s2)
s2.update([222,333])    #添加列表
print(s2)
s2.update(('asd',555))  #添加元组
print(s2)

在这里插入图片描述

删除操作

  • remove( )删除一个指定元素,若不存在会报错
    在这里插入图片描述
  • discard( ) 方法,删除一个指定元素,若不存在不会报错
    在这里插入图片描述
  • pop()操作,随机删除一个元素

随机删除了元素:0在这里插入图片描述

  • clear()清除整个集合
    在这里插入图片描述

集合之间的关系

  • 两个集合如果元素相同则集合相同,顺序无所谓

  • 一个集合是否是另一个的子集
    s.issubset( )函数

s3={'asd',33,22,11}
w=s3.issubset(s2)			  #s3是s2的子集吗
print(w)

在这里插入图片描述

  • 一个集合是否是另一个集合的超集(A是B的子集,则B就是A的超集)
    s.issuperset( )
s3={'asd',33,22,11}
w=s2.issuperset(s3)         #s2是s3的超集吗
print(w)
  • 两个子集是否交集
    s1.isdisjoint(s2)
s2={0, 200, 11, 333, 22, 'asd', 222, 33, 555, 300, 44, 55}
s3={'asd',33,22,11}
w=s2.isdisjoint(s3)         #s2与s3无交集吗
print(w)

输出:False

集合的数学操作

交集

s1.intersection(s2),获取集合S1和S2的交集

或者s1 & s2获取交集

s1={11,22,33,44}
s2={22,33,44,55}
print(s1.intersection(s2))				# {33, 44, 22}
print(s1 & s2)							# {33, 44, 22}

并集

s1.union(s2),获取集合S1和S2的并集
或者s1 | s2获取交集

s1={11,22,33,44}
s2={22,33,44,55}
print(s1.union(s2))						# {33, 11, 44, 22, 55}
print(s1 | s2)							# {33, 11, 44, 22, 55}

差集操作

在这里插入图片描述

就是一个集合减去与另一个集合的交集

s1.difference(s2),获取集合S1和S2的并集
或者s1 - s2获取交集

s1={11,22,33,44}
s2={22,33,44,55}
print(s1.difference(s2))						# {11}
print(s1 - s2)							# {11}

对称差集

在这里插入图片描述

就是两个集合的并集减去两个的交集

s1.symmetric_difference(s2),获取集合S1和S2的并集
或者s1 ^ s2获取交集

s1={11,22,33,44}
s2={22,33,44,55}
print(s1.symmetric_difference(s2))						# {11, 55}
print(s1 ^ s2)							# {11, 55}

集合生成式

s={i*i for i in range(10)}, 使用花括号

print(('----------集合生成式----------------'))
list=[i*i for i in range(10)]         #方括号,生成列表
print(list)

s={i*i for i in range(10)}            #花括号,生成集合
print(s)

在这里插入图片描述
列表是有序的,集合是将值hash后的

列表、字典、元组、集合总结

在这里插入图片描述

  • 仅元组不可变
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值