python学习 --- 集合基础

news2024/12/30 1:59:19

目录

一、什么是集合?

二、集合的创建方式

1、直接使用{}

2、使用内置函数set()

三、集合的相关操作

1、集合元素的判断

2、集合元素的新增

3、集合元素的删除

四、集合间的关系

五、集合的数学操作

1、交集操作

2、并集操作

3、差集操作

4、对称差集操作

六、集合生成式


一、什么是集合?

  • Python语言提供的内置数据结构
  • 与列表、字典一样都属于可变类型的序列(可以对其本身进行增删改等的操作)
  • 集合是没有value的字典
  • 集合中的元素不允许重复
  • 集合类型set

 dataA,dataB,dataC......表示添加元素的次序,他们最终的位置由哈希函数决定

二、集合的创建方式

1、直接使用{}

s = {'python', 'world', 21}

2、使用内置函数set()

s = {'python', 'world', 21}
#将列表类型的元素转为集合类型的元素
s1 = set(range(6))
s2 = set([0, 1, 2, 3, 4, 5, 5])
#将元组类型的元素转为集合类型的元素
s3 = set((0, 1, 2, 3, 4, 5))
#将字符串序列转为集合类型的元素
s4 = set('Python')
#也可以
s5 = set({0, 1, 2, 3, 4, 5, 5})

print('s1', s1)
print('s2', s2)
print('s3', s3)
print('s4', s4)
print('s5', s5)

注意:因为哈希函数的关系,集合元素顺序不一定会是原来列表的顺序

空集合------>

s = set()

注意不可以用s = {},这样会被判断为空字典。

三、集合的相关操作

1、集合元素的判断

s = {'python', 21, 23}
print(21 in s)
print(3 not in s)

2、集合元素的新增

调用add0方法,一次添加一个元素

s = {'python', 21, 23}
s.add(80)
print(s) #{80, 21, 'python', 23}

 调用update()方法,至少添加一个元素

s = {'python', 21, 23}
s.update({2, 3})
s.update([4, 5, 6])
s.update((7, 8, 9))
print(s)
#{2, 3, 4, 5, 6, 7, 8, 9, 21, 23, 'python'}

3、集合元素的删除

  • 调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出异常KeyError
  • 调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常
  • 调用pop()方法,一次只删除一个任意元素
  • 调用clear()方法,清空集合
s = {'python', 21, 23}
s.remove(21)
print(s)
s.discard(21)
print(s)
s.pop()
print(s)
s.clear()
print(s)

四、集合间的关系

  • 两个集合是否相等:可以使用运算符==或=进行判断
  • 一个集合是否是另一个集合的子集:可以调用方法issubset进行判断
  • 一个集合是否是另一个集合的超集:可以调用方法issuperset进行判断
  • 两个集合是否没有交集:可以调用方法isdisjoint进行判断
s1 = {10, 20, 30, 40}
s2 = {30, 40, 20, 10}
s2.issubset(s1) #s2是否是s1的子集
s2.issubset((s1)) #s2是否是s1的超集
s2.isdisjoint(s1) #s2与s1是否有交集

相等注意------>因为集合中的元素是无序的,所以相等判断无关元素顺序

s1 = {10, 20, 30, 40}
s2 = {30, 40, 20, 10}
print(s1 == s2) #True

五、集合的数学操作

1、交集操作

#s1与s2的交集
s1.intersection(s2)
#或------>intersection()与&等价
s1 & s2

2、并集操作

#s1与s2并集
s1.union(s2)
#或------>union与|等价
s1 | s2

3、差集操作

#s1对s2的差集
s1.difference(s2)
#或------>difference与-等价
s1 - s2

4、对称差集操作

#s1对s2的对称差集
s1.symmetric_difference(s2)
#或------>symmetric_difference()与^等价
s1 ^ s2

六、集合生成式

用于生成集合的公式

  • 将{}修改为[]就是列表生成式
  • 没有元组生成式------>元组是不可变序列
lst = { i*i for i in range(10)}
print(lst) #{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

 对比列表、元组、字典、集合------>

-------------------------------------------------------结束--------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174082.html

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

相关文章

基于微信小程序的校园商铺系统小程序

文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器…

2022大数据产业年度“国产化优秀代表厂商”榜单发布,亚信科技AntDB数据库位列其中

国产化/信创亚信科技 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 亚信科技也做数据库?实际上亚信科技AntDB是我国最早的国产数据库产品之一,是在21世纪初国外品牌数据库无法满足我国暴涨的通信需求的情况下,为了帮助通信运用商更好…

普中科技手把手教你学ESP32--基于MicroPython-02

第四讲:LED灯实验 MicroPython函数使用 本来需要加入machine.的,但是我引入了form machine import Pin就可以直接省略了 machine是一个模块,Pin是machine中的一个功能 Micropython官网学习 点击DOCS文档 选择相应的芯片 查看对应的模块 …

LeetCode 1801. 积压订单中的订单总数(C++)

思路: 该题主要是对比销售、采购的价格来进行数组\队列的pop和push操作来实现;采用优先队列来实现排序,其中销售和采购对应小队列和大队列 对于 销售 操作;如果采购的积压订单中有出价格比自己的销售价格高,就出 对于 …

C++设计模式(7)——外观模式

外观模式 亦称: Facade 意图 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。 正常情况下, 你需要负责所有对象的初始化工作、 管理其…

29.Isaac教程--调整导航

调整导航 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录调整导航定位器全局规划器局部规划器控制器定位器 定位器是导航堆栈的关键部分,因为了解机器人的位置对于正确导航到目的地至关重要。 因此,快速准确的定…

2、threejs官网本地化部署启动和Parcel热加载:Web应用打包工具介绍及使用

一、Three.js 官网 背景: threejs 是国外的网站,访问有时候比较卡,所以建议本地化部署启动一下,方便随时访问学习。 部署方案: 1、访问Threejs官网 2、点击github 选择 dev版本下载 3、下载完之后,解压…

Java中的this关键字

介绍 this关键字用于引用当前实例,在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。 Java关键字this只能用于方法方法体内,在类中的非静态方法中使用&#xff0…

14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)

本篇主要是集合框架基础和List集合,Map集合等等后续更 集合14.1 集合框架14.1.1 概念14.1.2 集合架构14.2 Collection接口14.2.1 常用方法14.3 迭代器14.3.1 迭代器原理14.3.2 迭代器使用常见问题14.4 泛型基本使用14.5 ArrayList类14.5.1 常用方法14.5.2 实现原理1…

【手写 Vue2.x 源码】第三十三篇 - diff算法-收尾+阶段性总结

一,前言 上篇,diff算法-乱序比对,主要涉及以下几个点: 介绍了乱序比对的方案介绍了乱序比对的过程分析实现了乱序比对的代码逻辑 本篇,diff 算法的阶段性梳理 二,初渲染与视图更新流程 Vue 初渲染时&…

注册商标需要哪些材料和条件?

申请注册商标条件是什么1、申请人必须是申请认定商标的所有人,是在当省区域内的自然人、法人和其他组织;2、该商标自核准注册之起连续使用满三年并继续有效,且无权属争议;3、该商标为相关公众所熟知,在相关市场内具有较高的知名度;4、该商标核…

亚信科技AntDB数据库荣获2022年度技术卓越奖

近日,业界知名IT垂直媒体IT168发布了“2022技术卓越奖”主题奖项,亚信科技AntDB数据库荣获技术卓越奖。 2022 “技术卓越奖”由行业CIO/CTO大咖、技术专家及IT媒体三方联合评选,评判标准代表了用户和媒体声音。经过多方评审,亚信科…

jvm参数简介

Xmx3550m:设置JVM最大堆内存为3550M。 -Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之…

【SCL】1200应用案例:交通灯模拟自动装料控制

使用博图SCL语言来编写 交通灯模拟控制 和 自动装料应用案例 文章目录 目录 前言 一、应用:交通灯模拟控制 1.控制要求 2.I\o分配和接线 3.程序编写和效果 4.小结 二、自动装料模拟控制 1.控制要求 2.I/O分配 3.程序编写 4.小结 总结 前言 本篇文章我们继续学习西…

宏任务和微任务

宏任务和微任务1. 什么是宏任务和微任务2. 宏任务和微任务的执行顺序3. 去银行办业务的场景4. 分析以下代码输出的顺序5. 经典面试题1. 什么是宏任务和微任务 JavaScript 把异步任务又做了进一步的划分,异步任务又分为两类,分别是: ① 宏任…

寄存器、RAM、ROM、Flash

单片机寄存器简述 寄存器详细请点这里 1、单片机寄存器就是单片机片内存储器(片内RAM)一部分,每一个都有地址。只不过这几个寄存器有特殊的作用,比如指令:MUL AB,这条指令用到两个寄存器A,B进行乘法,结果存到BA里面&a…

kaggle竞赛 | Quora Insincere Question | 文本情感分析

目录赛题背景赛题评价指标数据集分析pytorch建模之前发布了一遍实战类的情感分析的文章,包括微博爬虫,数据分析,相关模型。 可以参考: https://blog.csdn.net/lijiamingccc/article/details/126963413 比赛链接: http…

Spring Boot学习篇(十二)

Spring Boot学习篇(十二) shiro安全框架使用篇(四) 2 在主页显示用户登录状态、用户信息和完成默认注销(不改shiro原来的配置)操作 2.1 变更SysUserController类 2.1.1 在SysUserController类中注入sysUserMapper Autowired SysUserMapper sysUserMapper;2.1.2 在SysUserC…

1598_AURIX_TC275_GPIO功能以及部分寄存器梳理1

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 接下来,看一下GPIO的寄存器以及部分相关的功能。这部分将会是接下来这个章节剩余的全部,可能内容偏雷同,因此都是跳跃式看。但是中间需要临时关注一下的…

【2022年MathorCup大数据竞赛】B题:北京移动用户体验影响因素研究(二)(问题一的分析和结果)

目录:题目解析一、问题的解答框架二、问题一的分析2.1 附件1的处理流程2.2 附件2的处理流程2.2.1 拉格朗日插补法2.3 数据编码2.4 相关分析2.5 基于互信息GBDT的特征提取2.6 量化分析一、问题的解答框架 二、问题一的分析 针对问题一,首先需要对附件1和…