python基础数据类型--集合(set)
python基础数据类型--集合(set)#
集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合
集合中的三个特征
1.确定性(元素必须死可hash)
2.互异性(去重)
3.无序性(集合中的元素没有先后之分)如集合{1,2,3}和集合{2,3,1}算作一个集合
注意 集合存在的意义就是去重和关系运算#
一、集合的创建#
set1 = {1,2,3}
set2 = set({1,2,3})
增#
单个元素的增加add(), add的作用相当于列表中的append
序列的增加:update(), update类似于extend方法,update方法可以支持同时传入多个参数
a = {1,2} a.update([3,4],[1,2,7]) #迭代加 去重 >>>>a {1, 2, 3, 4, 7} a.update('hello') #迭代加 >>>>a {1, 2, 3, 4, 7, 'h', 'o', 'e', 'l'} a.add('hello') #追加 >>>a {1, 2, 3, 4, 7, 'h', 'o', 'hello', 'e', 'l'}
删除#
集合删除单个元素有两种方法:
元素不在原集合里
set.discard(x) 不会抛出异常
set.remove(x) 会抛出keyError错误
a = {1,2,3,4} a.discard(1) print(a) a.discard(1) #不会报错 print(a) a.remove(1) #报错 print(a) >>>> {2, 3, 4} {2, 3, 4} Traceback (most recent call last): File "D:/untitled/假期/2018-2-9/基础知识五--集合.py", line 19, in <module> a.remove(1) KeyError: 1
pop():由于集合是无序的,pop返回的结果不能确定,且当集合为空时调用pop会抛出KeyError错误,
clear(): 清空集合
a = {3,'a',2.1,1} a.pop() a.pop() #删除是无序的 a.clear() #清空 print(a) a.pop() #报错 print(a) >>>> set() Traceback (most recent call last): File "D:/untitled/假期/2018-2-9/基础知识五--集合.py", line 28, in <module> a.pop() KeyError: 'pop from an empty set'
查 #
只能用for循环
for i in set1: print(i)
集合的运算#
# ①交集 set1 = {'a', 'b', 'c', 'd', '1', '4'} set2 = {'1', '2', '3', '4', 'b', 'c'} print(set1 & set2) >>> {'c', '4', '1', 'b'} print(set1.intersection(set2)) >>> {'c', '4', '1', 'b'} # ②反交集 set1 = {'a', 'b', 'c', 'd', '1', '4'} set2 = {'1', '2', '3', '4', 'b', 'c'} print(set1 ^ set2) >>> {'d', '2', 'a', '3'} print(set1.symmetric_difference(set2)) >>> {'d', '2', 'a', '3'} # ③并集 set1 = {'a', 'b', 'c', 'd', '1', '4'} set2 = {'1', '2', '3', '4', 'b', 'c'} print(set1 | set2) >>> {'1', 'b', '2', '3', 'c', 'd', '4', 'a'} print(set1.union(set2)) >>> {'1', 'b', '2', '3', 'c', 'd', '4', 'a'} # ④差集 set1 = {'a', 'b', 'c', 'd', '1', '4'} set2 = {'1', '2', '3', '4', 'b', 'c'} print(set1 - set2) >>> {'d', 'a'} print(set1.difference(set2)) >>> {'d', 'a'} print(set2 - set1) >>> {'2', '3'} print(set2.difference(set1)) >>> {'2', '3'} # ⑤子集与超集 set1 = {'A','B','C','a','b','c'} set2 = {'A','B','C'} print(set2 < set1) >>> True print(set2.issubset(set1)) >>> True print(set1 > set2) >>> True print(set1.issuperset(set2)) >>> True
不可变集合#
# 不可变集合 set_frozen = frozenset({'A', 'B', 'C'}) print(set_frozen) >>> frozenset({'C', 'B', 'A'})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现