python基础之集合

本文深入讲解了Python中集合的基本概念,包括定义、创建方法及集合的多种操作如添加、删除、复制、交集、并集、差集和补集等。同时介绍了集合的判断功能,如是否为有效集、子集和父集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、python中集合的定义

由不同元素的集合,集合是一组无序排列的可Hash值,可以作为字典的key特性,集合中的元素是不可变类型。***注意三点(1.不同元素的集合,2.无序排列,3.集合中的元素是不可变类型)

二、集合的创建

s = set()
s = {1,2,3,4,5}

*注:创建空集合时,只能用set(),如果用第二种方法s={},创建的实际上是一个空字典。
s = {}
print(type(s))
<class 'dict'>

三、集合的功能

 

  • 基本功能

添加(add, update)

s={1,2,3,5,6}
s.add(4)              # 只能更新一个值,加的值不能重复
print(s)
s.update('4','7')   # 可更新多个值
print(s)
执行结果如下:
{1,2,3,4,5,6}
{1,2,3,5,6,'4','7'}

清空(clear)

s={1,2,3,5,6}
s.clear()
print(s)
执行结果如下:
set()

复制

s={1,2,3,5,6}
s1=s.copy()
print(s1)

执行结果如下:

s1={1,2,3,5,6}

 删除(pop, remove, discard)

s={4,10,5,7,8,4,9,2,5,‘s’}

s.pop() # 因为集合是无序的,所以随机删除的
print(s)

执行结果如下:

s={4, 5, 7, 8, 9, 10, 's'}

 

s.remove(7)  #删除指定元素3,元素不存在是报错

执行结果如下:

 s={4,10,5,8,4,9,2,5,‘s’}

s.discard('hello')  #元素不存在时不报错

  • 特有功能

交集(intersection 或' &')

p_s=['lcg','lzq','czd','cyz'] 
l_s=['cyz','zwx','wxj','czd']
print(p_s.intersection(l_s))  #求交集 
print(p_s & l_s)

执行结果如下:
{'cyz', 'czd'}
{'cyz', 'czd'}

并集(union  或 ' |')

p_s=['lcg','lzq','czd','cyz']
l_s=['cyz','zwx','wxj','czd']

print(p_s.union(l_s))    #求并集

print(p_s|l_s)

执行结果如下:

{'lzq', 'lcg', 'zwx', 'wxj', 'czd', 'cyz'}

{'lzq', 'lcg', 'zwx', 'wxj', 'czd', 'cyz'}

差集(difference 或  '-')

p_s=['lcg','lzq','czd','cyz']
l_s=['cyz','zwx','wxj','czd']

print('差集',p_s.difference(l_s))     # 求差集,p_s减去l_s

print('差集',p_s-l_s)

执行结果如下:

差集 {'lzq', 'lcg'}

差集 {'lzq', 'lcg'}

交叉补集(symmetric.difference 或 '^')

  p_s=['lcg','lzq','czd','cyz']
  l_s=['cyz','zwx','wxj','czd']
     

print(p_s.symmetric_difference(l_s))      #交叉补集

print('交叉补集',p_s^l_s)                        #两个集合合到一起减去他们的交集

执行结果如下:

{'zwx', 'wxj', 'lzq', 'lcg'}

交叉补集 {'zwx', 'wxj', 'lzq', 'lcg'}

判断是否为有效集(isdisjoint)

       s.isdisjoint:有交集为False,无交集为True    (其中s为集合)

子集和父集(issubset   和  issuperset)

       s1.issubset(s2):s2是s1的子集

       s2.issuperset(s1): s2是s1的父集

 

转载于:https://www.cnblogs.com/changzhendong/p/11151852.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值