python----集合


集合的创建

空集合只能用set()创建,不能用{}创建,{}被字典占用。

# 方法一
set1 = {"集合","元素"}
print(type(set1))       # <class 'set'># 方法二
set2 = set()
print(type(set2))       # <class 'set'># 这个是空字典,而不是空集合
d = {}
print(type(d))          # <class 'dict'>

集合的运算

len()函数

函数:len(集合)
作用:返回集合中元素的个数

st = {1,2,3,4,5,6}
le = len(st)
print(le)       # 6

关键字 in

关键字 :in
作用:判断元素是否在集合中

st = {"元素1","元素2","元素3","元素4"}
res = "元素1" in st
print(res)          # True
res1 = "元素5" in st
print(res1)         # False

并集

符号:|
作用:计算并集
返回值:返回两个集合中的所有元素

st1 = {1,2,3,4,5}
st2 = {2,4,6,8,9}
res = st1 | st2
print(res)      # {1, 2, 3, 4, 5, 6, 8, 9}

交集

符号:&
作用:计算交集
返回值:返回两个集合中共有元素

st1 = {1,2,3,4,5}
st2 = {2,4,6,8,9}
res = st1 & st2
print(res)    # {2, 4}

差集

符号:-
作用:计算差集
返回值:当A-B时,返回在集合A中但不出现在集合B中的所有元素

st1 = {1,2,3,4,5}
st2 = {2,4,6,8,9}
res = st1 - st2
print(res)      # {1, 3, 5}
res2 = st2 - st1
print(res2)     # {8, 9, 6}

对称差

符号:^
作用:计算对称差
返回值:返回两个集合交集以外的元素

st1 = {1,2,3,4,5}
st2 = {2,4,6,8,9}
res = st1 ^ st2
print(res)      # {1, 3, 5, 6, 8, 9}

子集和超集

符号 含义
A <= B 检测A是否是B的子集
A < B 检测A是否是B的真子集
A >= B 检测A是否是B的超集
A > B 检测A是否是B的真超集
A |= B 将B的元素并入A中
st1 = {1,2,3,4,5,6}
st2 = {1,2,3}res = st2 <= st1
print(res)  # Trueres1 = st2 < st1
print(res)  # Trueres2 = st2 >= st1
print(res)  # True

集合的方法

(1)、intersection()

功能: 计算两个集合交集
格式:集合1.intersection(集合2)
返回值:两个集合的交集
注意:成一个新的集合,两个集合的位置对结果没有影响

st1 = {1,2,3,4,5,6}
st2 = {2,4,6,8,10,12}
set1 = st1.intersection(st2)
print(set1)      # {2, 4, 6}
set2 = st2.intersection(st1)
print(set2)     # {2, 4, 6}

(2)、union()

功能:计算两个集合的并集
格式:集合1.intersection(集合2)
返回值:两个集合的并集
注意:成一个新的集合,两个集合的位置对结果没有影响

st1 = {1,2,3,4,5,6}
st2 = {2,4,6,8,10,12}
set1 = st1.union(st2)
print(set1)     # {1, 2, 3, 4, 5, 6, 8, 10, 12}
set2 = st2.union(st1)
print(set2)     # {1, 2, 3, 4, 5, 6, 8, 10, 12}

(3)、difference()

功能:计算两个集合的差集
格式:集合1.intersection(集合2)
返回值:两个集合的差集
注意:成一个新的集合,位置对结果有影响,表现为:集合1-集合2

st1 = {1,2,3,4,5,6}
st2 = {2,4,6,8,10,12}
set1 = st1.difference(st2)
print(set1)     # {1, 3, 5}
set2 = st2.difference(st1)
print(set2)     # {8, 10, 12}

(4)、symmetric_difference()

功能:计算两个集合的对称差集 (补集情况涵盖在其中)
格式:集合1.intersection(集合2)
返回值:两个集合的对称差集
注意:成一个新的集合,两个集合的位置对结果没有影响

st1 = {1,2,3,4,5,6}
st2 = {2,4,6,8,10,12}
set1 = st1.symmetric_difference(st2)
print(set1)         # {1, 3, 5, 8, 10, 12}
set2 = st2.symmetric_difference(st1)
print(set2)         # {1, 3, 5, 8, 10, 12}

(5)、issubset()

功能:判断是否是子集
格式:集合1.intersection(集合2)
返回值:False 或 True
注意:位置对结果有影响,表现为:检测集合1是否是集合2的子集

st1 = {1,2,3,4,5,6}
st2 = {1,2,3}
set1 = st1.issubset(st2)
print(set1)     # False
set2 = st2.issubset(st1)
print(set2)     # True

(6)、issuperset() 判断是否是父集

功能:判断是否是父集
格式:集合1.intersection(集合2)
返回值:False 或 True
注意:位置对结果有影响,表现为:检测集合1是否是集合2的父集

st1 = {1,2,3,4,5,6}
st2 = {1,2,3}
set1 = st1.issuperset(st2)
print(set1)     # True
set2 = st2.issuperset(st1)
print(set2)     # False

(7)、isdisjoint()

功能:检测两集合是否不相交
格式:集合1.intersection(集合2)
返回值:不相交 True 相交False
注意:两个集合的位置对结果没有影响

st1 = {1,2,3,4,5,6}
st2 = {2,4,6,}
# 相交
set1 = st1.isdisjoint(st2)
print(set1)
set2 = st2.isdisjoint(st1)
print(set2)st3 = {"hh",'hehe','haha'}
st4 = {"h",5,3}
# 不相交
set3 = st3.isdisjoint(st4)
print(set3)     # True

(8)、add()

功能:向集合中添加数据
格式:集合.add(数据)
返回值:None
注意:直接将数据添加到原来集合中且位置随机

st = {"黄毛","灰猫"}
t = st.add("黑猫")
print(t)        # None
print(st)       # {'黄毛', '黑猫', '灰猫'}

(9)、update() 迭代着增加

功能:迭代着增加
格式:集合.update(序列)
返回值:None
注意:直接将序列中的元素迭代添加到原来集合中且位置随机

st = {"工人","学生","老师"}
t = st.update(["医生","护士"])
print(t)        # None
print(st)       # {'学生', '护士', '医生', '老师', '工人'}
st.update(("白领","程序员"))
print(st)       # {'学生', '护士', '医生', '白领', '程序员', '老师', '工人'}

(10)、clear()

功能:清空集合
格式:集合.clear()
返回值:None
注意:集合中元素全部清空,原集合变为空集合

st = {"家长","学生","老师"}
t = st.clear()
print(t)        # None
print(st)       # set()

(11)、pop()

功能:随机删除集合中的一个数据
格式:集合.pop()
返回值:返回被删除的元素
注意:结果改变原集合,直接在原集合中删除数据

st = {"家长","学生","老师"}
t = st.pop()
print(t)        # 学生
print(st)       # {'老师', '家长'}

(12)、remove()

功能: 删除集合中指定的值(不存在则报错)
格式:集合.remove(指定元素)
返回值:None
注意:结果改变原集合,直接在原集合中删除数据,不存在报错

st = {"指定删除","没有报错"}
t = st.remove("指定删除")
print(t)        # None
print(st)       # {'没有报错'}st.remove("1")  # 报错:KeyError: '1'

(13)、discard()

功能:删除集合中指定的值(不存在的不删除 推荐使用)
格式:集合.discard(指定元素)
返回值:None
注意:结果改变原集合,直接在原集合中删除数据,

st = {'学生', '护士', '医生', '白领', '程序员', '老师', '工人'}
t = st.discard("工人")
print(t)        # None
print(st)       # {'老师', '程序员', '白领', '护士', '学生', '医生'}t2 = st.discard("haha")
print(st)       # {'老师', '程序员', '护士', '医生', '学生', '白领'}

冰冻集合

函数:frozenset()
作用:frozenset 可强转序列数据变为冰冻集合
注意:冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作

# 定义有个空的冰冻集合
t1 = frozenset()
print(type(t1))     # <class 'frozenset'># 列表强转冰冻集合
ls = [1,2,3,4,5]
t2 = frozenset(ls)
print(t2)       # frozenset({1, 2, 3, 4, 5})# 元组强转冰冻集合
tp = (1,2,3,4)
t3 = frozenset(tp)
print(t3)       # frozenset({1, 2, 3, 4})# 字符串强转冰冻集合
s = "123456"
t4 = frozenset(s)
print(t4)   # frozenset({'4', '2', '3', '6', '1', '5'})# 字典强转冰冻集合
dic = {"a":1,"b":2,"c":3}
t5 = frozenset(dic)
# 默认将键转为集合
print(t5)       # frozenset({'a', 'b', 'c'})# 不能在进行任何修改
# t5.add("haha")    # 报错:AttributeError: 'frozenset' object has no attribute 'add'
# t5.clear()          # 报错:AttributeError: 'frozenset' object has no attribute 'clear'

集合的去重性

很多场景中需要去掉重复值,集合就一个比较简单的去重工具

ls = [1904040201,1904040202,1904040203,1904040201,1904040202]
# 要求去掉重复的学号
st = set(ls)
new_ls = list(st)
print(new_ls)       # [1904040201, 1904040202, 1904040203]

python----集合相关推荐

  1. python集合(set)+常见方法+交叉并补

    python集合(set)+常见方法+交叉并补 集合的定义 定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key. 特性:集合的目的是将不同的值存放在一起,不同的集合间用来 ...

  2. Python集合之set()使用方法详解

    set是一个无序且不重复的元素集合,它有可变集合(set())和不可变集合(frozenset)两种,可以对set()集合进行创建.添加.删除.交集.并集和差集的操作,非常实用,以下是具体用法: 一. ...

  3. excel调用python编程-使用python集合进行EXCEL数据分析

    使用python集合进行EXCEL数据分析 标准库 Python真正精彩的方面之一是它具有非常丰富的模块标准库 ,无需安装第三方模块即可进行一些复杂的编程. 如果您在系统上有效安装了python,则可 ...

  4. python集合的并集、交集_Python 集合set()添加删除、交集、并集、集合操作详解

    1.在Python中set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的 ...

  5. python空集_玩转Python集合,这一篇就够了!

    原标题:玩转Python集合,这一篇就够了! 点上方蓝色" 菜鸟学Python",选" 星标"公众号 重磅干货,第一时间送到 选自DataCamp, 作者:Mi ...

  6. python集合运算_Python 集合set()添加删除、交集、并集、集合操作详解

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...

  7. python集合的操作_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

  8. python中集合运算_入门 | 一文带你了解Python集合与基本的集合运算

    原标题:入门 | 一文带你了解Python集合与基本的集合运算 选自DataCamp 作者:Michael Galarnyk 参与:Geek Ai.思源 一般我们熟悉 Python 中列表.元组及字典 ...

  9. python set集合_玩转Python集合,这一篇就够了!

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 选自DataCamp, 作者:Michael Galarnyk 本文由机器之心编译 了解 Python 集合: 它们是什么,如何创建 ...

  10. python集合输出_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

最新文章

  1. 将数据库改为使用登录名密码登陆
  2. p沟道mos管导通条件_场效应管(MOS管)的判断与应用知识
  3. 舞台灯恒流芯片 无频闪无噪音 多路共阳 调光深度0.1% 方案分享
  4. python 使用pymysql执行sql语句,使用try防止出错
  5. 为qt程序添加ico图标
  6. 程序员应该坚持写博客
  7. 甲骨文裁员900多人,赔偿N+6,有人获赔100万,被裁也能致富?
  8. python爬取千图网_python 爬取 花瓣网图片,千图网图片
  9. 环境工程微生物学练习题
  10. 计算机读不到u盘如何修复u盘,U盘读不出来怎么办?U盘无法读取修复方法
  11. python语言的实验心得体会范文_关于实验的心得体会范文5篇
  12. 搜索量过低百度和谷歌竞价账户分别是怎么处理的
  13. 【已解决】terminate called after throwing an instance of ‘cv::Exception‘,已放弃 (核心已转储)
  14. 技术宅整大活,把ChatGPT「调教」成二次元老婆,惹现女友暴走,含泪删库
  15. Sentinel系列之热点限流
  16. i2c-tools调试工具
  17. 基于ANFIS的有色噪声抵消技术
  18. word排版快捷指令_十个绝对经典的word排版小技巧+WORD经典快捷100招
  19. AI虚拟人、跨境二维码,微信正在北美寻找更多“小伙伴”
  20. 火焰焰心matlab,[转载]酒精灯火焰的温度真的是外焰最高吗?

热门文章

  1. 计算机方面的英语杂志,计算机类有哪些EI检索的英文期刊
  2. Nature:13个维度,手把手教“研究er”如何做学术报告
  3. Topic ods_base_db not present in metadata after 60000 ms.
  4. [ICCV2021]Learning to Stylize Novel Views
  5. [机缘参悟-14]:哲学、唯物主义、唯心主义与空无主义
  6. CDR X6设计师的福利,3折特惠!
  7. java修饰词严格程度_Java修饰词的总结
  8. lopa分析_LOPA分析法之独立保护层浅析
  9. 计算机专业专科可以进的国企,专科毕业生想进国企?这三大专业不要错过,成功率高达60%...
  10. 【设计模式】之 Prototype 原型模式