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.mzph.cn/pingmian/40800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress 付费主题modown分享,可实现资源付费

该主题下载地址 下载地址 简介 Modown是基于Erphpdown 会员下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题&#xff0c;一款针对收费付费下载资源/付费查看内容/付费阅读/付费视频/VIP会员免费下载查看/虚拟资源售…

IT专业入门,高考假期预习指南:运维方向

七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域&#xff0c;尤其是想要学习运维方向的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。提供一份全面的学习路线图&#xff0c;…

在Linux上查找文件的2个好用的命令

1. locate xx &#xff08;查找带xx字符的所有文件或目录&#xff09; 在终端输入命令 locate lua&#xff0c;可以看到&#xff0c;所有带lua字符的文件或目录都会被搜索出来。 2. find / -name xx &#xff08;查找名为xx的文件或目录&#xff09; 在终端输入命令 find …

SpringBoot集成beetl模板快速入门

在pom文件引入maven依赖 <dependency><groupId>com.ibeetl</groupId><artifactId>beetl-framework-starter</artifactId><version>1.1.81.RELEASE</version></dependency>写一个controller /*** author * create * descripti…

SecureCRT--使用sftp上传和下载文件

原文网址&#xff1a;SecureCRT--使用sftp上传和下载文件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SecureCRT如何在软件内直接上传和下载文件。 SecureCRT可以用如下两种方法上传和下载文件&#xff1a; 自带的sftp插件服务器安装rz/sz命令 本文介绍第一种方法&#xff0…

探索 Neo4j:图数据库的强大应用

探索 Neo4j&#xff1a;图数据库的强大应用 在现代数据驱动的世界中&#xff0c;关系数据的复杂性和规模不断增长&#xff0c;传统的关系数据库在处理高度连接数据时面临诸多挑战。Neo4j 作为领先的图数据库&#xff0c;通过其独特的图形数据模型和高效的查询语言&#xff0c;…

【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?

文章目录 卡顿一、可重现的卡顿二、不可重现的卡顿第一种方案: 基于 Looper 的监控方法第二种方案:基于 Choreographer 的监控方法第三种方案:字节码插桩方式第四种方案: 使用 JVMTI 监听函数进入与退出总结相关大厂的方案ArgusAPMBlockCanaryQQ空间卡慢组件Matrix微信广研参…

vue目录说明

vue目录说明 主要目录说明 .vscode - - -vscode工具的配置文件夹 node_modules - - - vue项目的运行依赖文件夹 public - - -资源文件夹&#xff08;浏览器图标&#xff09; src- - -源码文件夹 .gitignore - - -git忽略文件 index.html - - -入口html文件 package.json - - -…

C++ //练习 14.37 编写一个类令其检查两个值是否相等。使用该对象及标准库算法编写程序,令其替换某个序列中具有给定值的所有实例。

C Primer&#xff08;第5版&#xff09; 练习 14.37 练习 14.37 编写一个类令其检查两个值是否相等。使用该对象及标准库算法编写程序&#xff0c;令其替换某个序列中具有给定值的所有实例。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a…

系统架构设计师教程(清华第2版)<第1章 绪论>解读

系统架构设计师教程 第一章 绪论 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1.1.3 软件架构的应用场景1.1.4 软件架构的发展未来1.2 系统架构设计师概述1.2.1 架构设计师的定义、职责和任务1.2.2 架构设计师应具备的专业素质1.3 如何成…

上份工作不干了24年5月-6月回顾(面试+软考)需要资料的小伙伴可以关注下

前言&#xff1a; 博主在5月和6月基本没有对博客内容进行更新了&#xff0c;不是博主偷懒&#xff0c;5月份博主在全力准备24年系统分析师的软考&#xff0c;6月份在准备面试&#xff0c;现在对5月和6月进行回顾&#xff1b; 先说下软考系统分析师&#xff1a; 博主实在今年3月…

记录OSPF配置,建立邻居失败的过程

1.配置完ospf后&#xff0c;在路由表中不出现ospf相关信息 [SW2]ospf [SW2-ospf-1]are [SW2-ospf-1]area 0 [SW2-ospf-1-area-0.0.0.0]net [SW2-ospf-1-area-0.0.0.0]network 0.0.0.0 Jul 4 2024 22:11:58-08:00 SW2 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25 .1…

如何利用 SCSS 的变量和混合(Mixin)功能来创建可复用的样式组件,并确保在不同场景下的兼容性?

使用 SCSS 的变量和混合功能可以方便地创建可复用的样式组件&#xff0c;并确保在不同场景下的兼容性。下面是具体的步骤&#xff1a; 创建变量&#xff1a;使用 $ 符号定义变量&#xff0c;例如 $primary-color: #005500;。这样可以方便地在整个项目中重复使用该颜色。 创建混…

arm_uart4实验

#include "uart4.h" //UART //初始化 void hal_uart4_init() { //rcc_init //…

前端Debugger时复制的JS对象字符转JSON对象

前端debugger时&#xff0c;复制的对象在控制台输出时是如下格式&#xff0c;需要转换为对象格式来进行验证操作 bridgeId : 4118 createBy : null createTime : "2023-03-24 10:35:26" createUserId : 1 具体实现代码&#xff1a; // 转换transform (text) {l…

Java面向对象练习(4.文字格斗游戏)(2024.7.4)

角色类 package FightGame20240704; import java.util.Random; public class GameRole {Random r new Random();private String name;private int blood;private char gender;private String face;public GameRole(){}public GameRole(String name, int blood, char gender){…

openlayers中区域掩膜的实现

概述 在前文完成了mapboxGL中区域掩膜的实现。近日有人问到说在openlayers中如何实现&#xff0c;本文就带大家看看如何在openlayers中实现区域掩膜。 实现效果 实现 1. 实现思路 在地图容器中添加一个canvas&#xff0c;设置其在map之上&#xff1b;监听map的postrender事…

文华财经T9多空波段趋势量化交易策略模型源码

// 定义变量 Vars Numeric STEP1,MVALUE1,SARVAL,C; Numeric SARLINE,COND,ZBMA1,ZBMA2; Begin CCLOSE; STEP13/11; MVALUE120/22; SARVALSAR(4, STEP1, MVALUE1); PlotLine("",IIF(SARVAL>0,SARVAL,InvalidNumeric),RED,Circledot); PlotLine("&q…

AI大模型开发入门:OpenAI API的Hello World

AI大模型时代下&#xff0c;我们也要学点大模型知识了。 前面我们简单实现了将GPT接入微信公众号&#xff1a; [【超详细&#xff01;】Python微信公众号开发&#xff08;4&#xff09;- 手把手教你接入GPT]&#xff0c;算是已经用过一点AI的知识了&#xff0c;浅尝辄止。 这还…

[吃瓜教程]南瓜书第5章神经网络

1.M-P神经元 M-P神经元&#xff0c;全称为McCulloch-Pitts神经元&#xff0c;是一种数学模型&#xff0c;用于模拟生物神经元的功能。这个模型是由Warren McCulloch和Walter Pitts在1943年提出的。它是人工智能和计算神经科学领域中非常重要的早期模型。 M-P神经元接收n个输入…