Python全栈day14(集合)

一,集合

  1,集合由不同元素组成

  2,无序

  3,集合中元素必须是不可变类型

 

二,定义集合

  1,s = {1,2,3,4,5}

  2,s = set(hello)以迭代的方式生成集合

1
2
3
4
s = set("hello")
print(s)
 
{'o', 'e', 'h', 'l'}

  

三,集合的方法

  1,add添加,如果添加有重复不会报错但是也不会添加

1
2
3
4
5
s = {1,2,3}
s.add(4)
print(s)
 
{1, 2, 3, 4}

  

  2,clear清除

 

  3,copy拷贝

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

  

  4,pop删除,因为是无序的所以是随机删除

 

  5,remove指定删除,如果指定参数没有则报错不存在KeyError

1
2
3
4
5
s = {1,2,3}
s.remove(1)
print(s)
 
{2,3}

  

  6,discard和remove功能一样不过是假如没有找到关键字不会报错

 

四,集合的运算

  1,并集

  假设有两个列表一个列表列出学习python的学生一个列出学习linux的学生请列出既学习了python的又学习了linux的学生

  通过循环的方法vim day14-2.py

1
2
3
4
5
6
7
python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
python_and_linux_l = []
for p_name in python_l:
    if p_name in linux_l:
        python_and_linux_l.append(p_name)
print(python_and_linux_l)<br><br>['zhangsan', 'lisi']

  这种方法比较low下面用集合来处理 vim day14-3.py

1
2
3
4
5
6
python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.intersection(l_s))<br><br>print(p_s&l_s)

  使用print(p_s&l_s)更加简单

 

  2,和集

  使用union或者符号

  

  3,差集

  直接使用-号即可,存在于键鼠不存在于被减数中的元素

  p_s - l_s

 

  4,交叉补集symmetric_difference 符号^ 先合集在减去并集就是交叉补集

1
2
3
4
5
6
python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi','dage']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.symmetric_difference(l_s))

  

  5,difference_update求完差集并更新原集合返回值为None 以下操作相当于p_s = p_s - l_s

1
2
3
4
5
6
7
python_l = ['zhangsan','lisi','wangwu']
linux_l = ['zhangsan','lisi']
#把列表转换成无序的集合
p_s = set(python_l)
l_s = set(linux_l)
v = p_s.difference_update(l_s)
print(p_s,v)<br><br>{'wangwu'} None

  

  6,isdisjoint 两个集合没有交集返回True有交集返回False

1
2
3
4
5
s1 = {1,2}
s2 = {3,4}
print(s1.isdisjoint(s2))
 
True

  

   7,issubset一个集合是否是另外一个集合的子集 如果是返回True如果不是返回False

1
2
3
4
5
s1 = {1,2}
s2 = {1,2,3,4}
print(s1.issubset(s2))
 
True

  

  8,issuperset判断一个集合是否是另外一个集合的父集

 

  9,update并集并且更新和union不同的是union不会更新

1
2
3
4
5
6
s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)
print(s1)
 
{1,2,3}

  

 五,集合的补充

  

  1,frozenset定义不可变集合

1
2
3
4
s = frozenset('hello')
print(s)
 
frozenset({'e', 'h', 'l', 'o'})

  2,列表使用集合的方法去重,但是新生成的列表顺序可能和原列表不同

1
2
3
4
5
names = ['zhangsan','zhangsan','lisi']
names = list(set(names))
print(names)
 
['lisi', 'zhangsan']

  

 

  

posted @   minseo  阅读(187)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示