当前位置: 首页 > news >正文

day10:01集合

1 作用

Python中的集合(Set)是一个无序的、不包含重复元素的容器。它主要用于去重、成员测试、以及执行数学上的集合运算(如并集、交集、差集和对称差集)等操作。集合的内部实现通常基于哈希表,这提供了快速的成员测试能力。集合的这些特性使其成为处理无需排序且不包含重复项的数据时的理想选择。

1.1 关系运算

friends1 = ["zero","kevin","jason","egon"]
friends2 = ["Jy","ricky","jason","egon"]l=[]
for x in friends1:if x in friends2:l.append(x)
print(l)

1.2 去重

定义一个包含重复元素的列表

my_list = [1, 2, 2, 3, 4, 4, 5]# 使用集合进行去重  
# 注意:集合是无序的,所以结果列表的顺序可能会改变  
my_set = set(my_list)
print(my_set)  ## {1, 2, 3, 4, 5}# 如果需要,可以将结果转换回列表  
my_list_unique = list(my_set)# 打印结果  
print(my_list_unique)  ## [1, 2, 3, 4, 5]

2 定义:

在{}内用逗号分隔开多个元素,多个元素满足以下三个条件

  1. 集合内元素必须为不可变类型
  2. 集合内元素无序
  3. 集合内元素没有重复
s={1,2} # s=set({1,2})s={1,[1,2]} # 集合内元素必须为不可变类型
s={1,'a','z','b',4,7} # 集合内元素无序
s={1,1,1,1,1,1,'a','b'} # 集合内元素没有重复
print(s)

2.1 了解

s={} # 默认是空字典
print(type(s))

2.2定义空集合

s=set()
print(s,type(s))

3 类型转换

set({1,2,3})
res=set('hellolllll')
print(res)print(set([1,1,1,1,1,1]))
print(set([1,1,1,1,1,1,[11,222]]) # 报错print(set({'k1':1,'k2':2}))

4 内置方法

并集(|)、交集(&)、差集(-)和对称差集(^)等,这些操作在处理集合数据时非常有用。

=关系运算符=

friends1 = {“zero”,“kevin”,“jason”,“egon”}
friends2 = {“Jy”,“ricky”,“jason”,“egon”}

4.1 取交集:两者共同的好友

res=friends1 & friends2
print(res)
print(friends1.intersection(friends2))

4.2 取并集/合集:两者所有的好友

print(friends1 | friends2)
print(friends1.union(friends2))

4.3 取差集:取friends1独有的好友

print(friends1 - friends2)
print(friends1.difference(friends2))

取friends2独有的好友

print(friends2 - friends1)
print(friends2.difference(friends1))

4.4 对称差集: 求两个用户独有的好友们(即去掉共有的好友)

print(friends1 ^ friends2)
print(friends1.symmetric_difference(friends2))

4.5 父子集:包含的关系

s1={1,2,3}
s2={1,2,4}
#不存在包含关系,下面比较均为False
print(s1 > s2)
print(s1 < s2)
s1={1,2,3}
s2={1,2}
print(s1 > s2) # 当s1大于或等于s2时,才能说是s1是s2他爹
print(s1.issuperset(s2))
print(s2.issubset(s1)) # s2 < s2  =>Trues1={1,2,3}
s2={1,2,3}
print(s1 == s2) # s1与s2互为父子
print(s1.issuperset(s2))
print(s2.issuperset(s1))

=去重=

4.6 只能针对不可变类型去重

print(set([1,1,1,1,2]))

4.7 无法保证原来的顺序

if dic not in new_l: 这行代码检查当前遍历到的字典 dic 是否不在 new_l 列表中。如果不在,说明这是一个新的(即之前未出现过的)字典,应该被添加到 new_l 中。
new_l.append(dic) 如果上述条件为真,则将 dic 添加到 new_l 列表中。

l=[1,'a','b','z',1,1,1,2]
l=list(set(l))
print(l)l=[{'name':'lili','age':18,'sex':'male'},{'name':'jack','age':73,'sex':'male'},{'name':'tom','age':20,'sex':'female'},{'name':'lili','age':18,'sex':'male'},{'name':'lili','age':18,'sex':'male'},
]
new_l=[]
for dic in l:if dic not in new_l:new_l.append(dic)print(new_l)

5 其他操作

5.1 长度

s={'a','b','c'}
len(s)>>3

5.2 成员运算

'c' in s>>True

5.3 循环

 for item in s:print(item)c
a
b

6 需要掌握的其他内置方法

6.1 方法1:discard

s={1,2,3}
s.discard(4) # 删除元素不存在do nothing
print(s)
s.remove(4) # 删除元素不存在则报错

6.2 方法2:update

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

6.3 方法3:pop

s={1,2,3}
res=s.pop()
print(res)# 需要掌握的内置方法4:add
s.add(4)
print(s)

7.其余方法全为了解

7.1 isdisjoint

isdisjoint(): 方法用于判断两个集合是否没有交集。如果两个集合没有交集,则返回 True;否则返回 False

set1 = {1, 2, 3, 4}  
set2 = {5, 6, 7, 8}  
print(set1.isdisjoint(set2))  # 输出: True  set3 = {3, 4, 5}  
print(set1.isdisjoint(set3))  # 输出: False

7.2 difference_update

ifference_update(): 方法用于从集合中移除那些也出现在指定集合(或可迭代对象)中的所有元素。这个方法是就地(in-place)修改集合的,即它会直接修改调用它的集合,而不是返回一个新的集合。

set1 = {1, 2, 3, 4, 5}  
set2 = {4, 5, 6, 7}  '''使用 difference_update() 移除 set1 中与 set2 相同的元素  '''
set1.difference_update(set2)  print(set1)  # 输出: {1, 2, 3}  '''注意:set1 已经被修改了'''
http://www.lryc.cn/news/391622.html

相关文章:

  • 03浅谈提示工程、RAG和微调
  • 硅纪元视角 | AI纳米机器人突破癌症治疗,精准打击肿瘤细胞
  • 刷代码随想录有感(125):动态规划——最长公共子序列
  • Linux和mysql中的基础知识
  • ArcGIS Pro SDK (七)编辑 12 编辑模版
  • 数据结构底层之HashMap(面经篇1)
  • 昇思学习打卡-6-基于MindSpore的GPT2文本摘要
  • 代码随想录算法训练营第2天|LeetCode977,209,59
  • Web前端开发——HTML快速入门
  • 浅谈http协议及常见的面试题
  • LabVIEW自动探头外观检测
  • 搏击与防卫笔记
  • 泰国内部安全行动司令部数据泄露
  • MATLAB算法实战应用案例精讲-【数模应用】分层聚类(附MATLAB、python和R语言代码实现)
  • 九、函数的声明和定义
  • 简洁纯文字类的Typecho主题wenso
  • 安卓请求服务器[根据服务器的内容来更新spinner]
  • c++ 联合(Union)的特性和使用
  • 大白菜U盘启动工具
  • C# 中 IEnumerable 和 IQueryable 接口之间的区别
  • centos安装yum命令及常用yum命令
  • table = collections.defaultdict(list)申请的字典的类型是什么?
  • 【虚拟机】虚拟机网络无法访问问题【已解决】
  • 大数据面试题之Spark(3)
  • 基于 Gunicorn + Flask + Docker 的模型高并发部署
  • CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
  • windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹
  • ffmpeg推流时Unknown encoder ‘libx264‘
  • xmind导入导出支持图片功能源码改造
  • Web应用防火墙用在哪些场景?