百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

4.python学习笔记-集合

liuian 2025-03-06 16:48 27 浏览

1.关于集合

集合是一类元素无序不重复的数据结构,常用场景是元素去重和集合运算。python可以使用大括号{}或者set()函数创建集合,如果创建一个空集合必须用set()而不是{},因为{}是用来表示空字典类型。

对比java,java有set相关的接口,是通过接口层面抽象的,具体有不同的实现类,比如:HashSet、TreeSet等。

2.常用操作

创建集合

#1.使用{}创建,自动去重
names={"li lei","ha mei mei","li lei","song lei"}
print(type(names))
print(names)
names={}
print(type(names))
#2.空set集合用set()函数表示,不能用{}
names=set()
print(type(names))
#3.基于list,tuple等创建
names_list=["li lei","ha mei mei","li lei","song lei"]
names=set(names_list)
print(type(names))
print(names)
name_tuple=("li lei","ha mei mei","li lei","song lei")
names=set(name_tuple)
print(type(names))
print(names)  
输出结果:

{'ha mei mei', 'song lei', 'li lei'}



{'ha mei mei', 'song lei', 'li lei'}

{'ha mei mei', 'song lei', 'li lei'}

集合包含

使用in/not in判断是否包含某个元素

names={"li lei","ha mei mei","li lei","song lei"}
print(names)
print("li lei" in names)
print("wang lei" not in names)
输出结果:
{'song lei', 'li lei', 'ha mei mei'}
True
True

集合运算

交集/并集/差集/对称差/子集/超集

names_a={"li lei","ha mei mei","song lei","wang lei"}
names_b={"li lei","ha mei mei","song lei","zhao lei"}
names_c={"li lei","ha mei mei","song lei"}
#交集,用于获取两个或多个集合中共同拥有的元素
print("交集:",names_a.intersection(names_b))
print("交集:",names_a & names_b)

#并集,用于合并两个或多个集合中的所有元素
print("并集:",names_a.union(names_b))
print("并集:",names_a | names_b)

#差集,用于获取一个集合中存在,而另一个集合中不存在的元素
print("并集:",names_a.difference(names_b))
print("并集:",names_a - names_b)

#对称差,用于获取两个集合中不共有的元素
print("对称差:",names_a.symmetric_difference(names_b))
print("对称差:",names_a ^ names_b)

#子集,用于判断一个集合所有元素是否被另一个集合包含
print("子集:",names_c.issubset(names_a))
print("子集:",names_c <= names_a print:names_a.issupersetnames_c print:names_a>= names_c)
输出结果:
交集: {'li lei', 'ha mei mei', 'song lei'}
交集: {'li lei', 'ha mei mei', 'song lei'}
并集: {'li lei', 'zhao lei', 'ha mei mei', 'wang lei', 'song lei'}
并集: {'li lei', 'zhao lei', 'ha mei mei', 'wang lei', 'song lei'}
并集: {'wang lei'}
并集: {'wang lei'}
对称差: {'zhao lei', 'wang lei'}
对称差: {'zhao lei', 'wang lei'}
子集: True
子集: True
超集: True
超集: True

添加元素

#添加元素
names_a={"li lei","ha mei mei"}
names_a.add("zhao lei")
#重复添加,不会报错
names_a.add("zhao lei")
print(names_a)

#可以添加不可变的元组,不能是list/set/dict
names_a.add(("zhao lei","qian lei"))
print(names_a)

#让人费解的update函数
#update函数传入字符串,会将字符串拆分成字符后添加
names_a.update("123")
print(names_a)

#update函数传入元组,会添加每个元组元素
names_a.update(("zhao lei","qian lei"))
print(names_a)

#update函数传入字典,会添加每个字典的key
names_a.update({"test":10})
print(names_a)
输出结果:
{'li lei', 'zhao lei', 'ha mei mei'}
{'li lei', 'zhao lei', ('zhao lei', 'qian lei'), 'ha mei mei'}
{'ha mei mei', 'zhao lei', ('zhao lei', 'qian lei'), 'li lei', '2', '1', '3'}
{'ha mei mei', 'zhao lei', ('zhao lei', 'qian lei'), 'li lei', '2', '1', 'qian lei', '3'}
{'ha mei mei', 'zhao lei', ('zhao lei', 'qian lei'), 'li lei', '2', '1', 'qian lei', '3', 'test'}

删除元素

#删除元素
names_a={"li lei","ha mei mei","song lei","wang lei"}
#尝试remove不存在的元素,会报错:KeyError: 'not exist'
#names_a.remove("not exist")
names_a.remove("song lei")
print(names_a)

#尝试discard不存在的元素,不会报错
names_a.discard("not exist")
names_a.discard("wang lei")
print(names_a)

#pop会随机选一个
names_a.pop()
print(names_a)

#清空集合
names_a.clear()
print(names_a)
输出结果:
{'li lei', 'ha mei mei', 'wang lei'}
{'li lei', 'ha mei mei'}
{'ha mei mei'}
set()

修改元素

集合中的元素都是无序的,所以不能使用下标,一般修改操作可以转化为:先删除,再添加

#修改元素
names_a={"li lei","ha mei mei","song lei","wang lei"}
print(names_a)
names_a.discard("wang lei")
names_a.add("wang li")
print(names_a)
输出结果:
{'song lei', 'wang lei', 'li lei', 'ha mei mei'}
{'ha mei mei', 'song lei', 'wang li', 'li lei'}

集合拷贝

#集合复制
names_a={"li lei","ha mei mei","song lei","wang lei"}
print(names_a)
names_b=names_a.copy()
print(names_b)
输出结果:
{'wang lei', 'li lei', 'ha mei mei', 'song lei'}
{'wang lei', 'li lei', 'ha mei mei', 'song lei'}

相关推荐

壁纸下载(壁纸下载安装)

回答如下:要下载电视屏保相册,您需要先找到适用于您的电视的屏保应用程序。这些应用程序可能会根据您的电视品牌和型号而有所不同,您可以在电视的应用商店中搜索或查看电视制造商的网站以获取更多信息。一旦您找到...

木马病毒下载安装(木马病毒下载安装不实名认证)

现在1,你自己机器上下载个杀毒软件,安装之后不要删除安装包2,运行杀毒软件3,插入优盘,杀毒软件会自动扫描优盘发现病毒然后提示你4,选择处理/杀毒/清理这些字样5,把杀毒软件安装包复制到优盘6,右键优...

免费清理软件哪个最好最快(免费好用的清理垃圾软件)
  • 免费清理软件哪个最好最快(免费好用的清理垃圾软件)
  • 免费清理软件哪个最好最快(免费好用的清理垃圾软件)
  • 免费清理软件哪个最好最快(免费好用的清理垃圾软件)
  • 免费清理软件哪个最好最快(免费好用的清理垃圾软件)
手机cdr转jpg最简单的方法(手机cdr转换jpg)

cdr文件怎么转换成jpg,快来看下操作方法吧。方法/步骤1、打开电脑中的cdr软件,点击文件,打开,打开需要转换格式的cdr文件。2、点击菜单栏的文件,导出。3、打开导出对话框选择保存文件路径。4、...

xp永久激活工具(xp永久激活码)

如果你需要重置XP的激活器,你需要先打开“开始”菜单,然后选择“运行”。在运行对话框中,输入“regedit”,然后按回车键。这会打开注册表编辑器。在编辑器中,使用左侧面板来导航到“HKEY_LOCA...

cad2008激活序列号(激活cad的序列号)

1.首先运行“AutoCAD2008安装包”中的“Setup.exe”安装AutoCAD2008,安装过程需要十分钟左右;2.第一次运行AutoCAD2008时,请在注册界面输入序列号666-9...

自己可以重装电脑系统么(可以自己重装系统吗)

电脑自身也可以重装系统。1.电脑是一个可编程的设备,通过特定的步骤和操作,用户可以自行进行系统重装。2.重装系统的过程包括备份重要数据、获取系统安装介质、重新启动电脑进入安装界面、按照指引选择系统...

win11免费下载(win11正式版下载)
  • win11免费下载(win11正式版下载)
  • win11免费下载(win11正式版下载)
  • win11免费下载(win11正式版下载)
  • win11免费下载(win11正式版下载)
qq邮箱在哪里找账号(qq邮箱账号在qq里怎么找)
  • qq邮箱在哪里找账号(qq邮箱账号在qq里怎么找)
  • qq邮箱在哪里找账号(qq邮箱账号在qq里怎么找)
  • qq邮箱在哪里找账号(qq邮箱账号在qq里怎么找)
  • qq邮箱在哪里找账号(qq邮箱账号在qq里怎么找)
苹果处理器性能排行(苹果处理器性能排行榜平板)

1、截止至最新的iPhoneXS上搭载的A12,从iPhone4首次搭载A4处理器开始,目前已经有9代的苹果A系列处理器;2、A4是一颗45nm制程的ARMCortex-A8的单核心处理器,GP...

苹果手机怎么录屏(苹果手机怎么录屏在哪里打开)

iPhone手机的屏幕录制功能需要在设置里面进行添加,添加成功之后,就可以使用录屏功能了。点击控制中心进入iPhone手机的设置,来到设置之后,找到控制中心选项并点击。点击加号添加录屏功能来到控制中心...

电脑怎么打开系统还原(电脑怎么开启系统还原的功能)

右键此电脑,属性,系统保护,配置,勾选启用系统保护,确定,创建,输入还原点描述,点击创建,系统提示已成功创建还原点,点击关闭,当需要还原的时候,点击上面的系统还原,选择需要还原的节点,点击完成,即可开...

ghost系统下载xp(非ghostxp下载)

蒲公英系统网站能下载。下载后缀为gho的xp系统,使用体验非常棒效果非常好。以上信息根据美国华盛顿操作系统邮报最新消息显示。不能装钉钉的。在WindowsXP系统上是不能安装钉钉来上网课的。要使用钉...

电脑安全模式怎么用(电脑安全模式怎么按出来)

1.进入运行输入指令确定键盘上按下win+r组合键,打开运行,输入msconfig,点击确定。2.进引导系统选安全引导进入页面后,点击引导,选中系统,勾选安全引导,点击确定。3.重启进入安全模式弹出...

win10可选更新(win10可选更新和必要更新)

首先确保系统是激活状态。如果不是,可以用小马激活或KMS激活软件等工具激活。1.打开开始菜单,选择“设置”,选择“更新和安全”,设置自动检测安装更新,接受win10推送。电脑接受win10推送后...