Python基础-数据类型之集合
一、集合的定义
集合:是一个无序的没有重复元素的序列,因此不能通过索引来进行操作
1:使用set()创建集合
set(object) # 参数为一个序列,整型不能作为参数
set_a = set("abcb")
print(set_a) # {'b', 'a', 'c'}
2:使用{}直接定义
set_a = {'a', 'b', 'c'}
print(type(set_a), set_a) # <class 'set'> {'b', 'c', 'a'}
注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典的
set_a = set()
print(type(set_a), set_a) # <class 'set'> set()b = {}
print(type(b), b) # <class 'dict'> {}
二、集合的使用
1:添加元素add():重复添加无效
set.add(x) # x为要添加的元素
返回值为:None,修改了原集合
set_a = set("abc")
print(set_a) # {'c', 'a', 'b'}
# 元素不存在
set_a.add("d")
print(set_a) # {'c', 'a', 'b', 'd'}
# 元素已存在
set_a.add('c')
print(set_a) # {'c', 'a', 'b', 'd'}
2:添加多个元素update():把传入的元素拆分,作为个体加入到集合中
set.update()
返回值为:None,修改了原集合
set_a = set("abc")
print(set_a) # {'c', 'b', 'a'}
result = set_a.update("defdab")
print(result) # None
print(set_a) # {'d', 'f', 'e', 'b', 'c', 'a'}
set_a = set("abc")
print(set_a) # {'a', 'b', 'c'}
result = set_a.update(['a','g','r',1,2])
print(result) # None
print(set_a) # {1, 2, 'a', 'r', 'g', 'c', 'b'}
3:删除元素remove()
set.remove(x) # x为要删除的元素
返回值为:None,删除的元素不存在,会报错,修改了元集合
set_a = set("abc")
print(set_a) # {'b', 'c', 'a'}
result = set_a.remove('a')
print(result) # None
print(set_a) # {'b', 'c'}
result = set_a.remove('d') # 报错,KeyError: 'd'
4:删除元素discard()
set.discard(x) # x为要删除的元素
返回值为:None,删除的元素不存在,不会报错,修改了元集合
set_a = set("abc")
print(set_a) # {'c', 'b', 'a'}
# 删除的元素存在
result = set_a.discard('a')
print(result) # None
print(set_a) # {'c', 'b'}
# 删除的元素不存在
result = set_a.discard('d')
print(result) # None
print(set_a) # {'c', 'b'}
5:删除元素pop():随机删除一个元素
set.pop()
返回值为:被删除的元素,修改了元集合
set_a = set("abc")
print(set_a) # {'c', 'a', 'b'}
result = set_a.pop()
print(result) # c
print(set_a) # {'a', 'b'}
6:统计集合的元素个数len()
len(set)
返回值为:集合的元素个数
set_a = {'a', 'b', 'c'}
result = len(set_a)
print(result) # 3
7:清空集合clear()
set.clear()
返回值为:None,修改了原集合
set_a = {'a', 'b', 'c'}
result = set_a.clear()
print(result) # None
print(set_a) # set()
8:判断元素是否在集合中,使用成员运算符(in / not in)
set_a = {'a', 'b', 'c'}
print('a' in set_a) # True
print('a' not in set_a) # False
9:isdisjoint():判断两个集合是否包含相同的元素
set.isdisjoint(set1) # set1必填
返回值为:返回布尔值,包含相同的元素返回False,不包含相同的元素,返回True
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a与set_b中是否有相同的元素
result = set_a.isdisjoint(set_b)
print(result) # False
10:issubset() :判断集合中的所有元素是否都包含在指定的集合中
set.issubset(set1) # set中的所有元素是否都包含在set1中
# set1:必填
返回值为:布尔值,如果都包含返回True,否则返回False
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_a中的所有元素是否都包含在set_b中
result = set_a.issubset(set_b)
print(result) # True
11:issuperset() :判断指定集合的所有元素是否都包含在原始的集合中
set.issuperset(set1) # set1中的所有元素是否都包含在set中
# set1:必填
返回值为:布尔值,如果都包含返回True,否则返回False
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_b中的所有元素是否都包含在set_a中
result = set_a.issuperset(set_b)
print(result) # False
三、集合的操作符
1:求差集,集合元素包含在第一个集合中,但不包含在第二个集合
1.1:使用“-”操作符
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a - set_b
print(result) # {'c', 'b'}
1.2:使用difference()方法
set1.difference(set2) # set1中有的元素,set2中没有
返回值为:一个新的集合,不修改原集合
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference(set_b)
print(result) # {'c', 'b'}
1.3:使用difference_update()方法
set1.difference_update()(set2) # set1中有的元素,set2中没有
返回值为:一个新的集合,修改了原集合set1
difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference_update(set_b)
print(result) # None
print(set_a) # {'c', 'b'}
2:求交集,集合元素包含在第一个集合中,同时包含在第二个集合
2.1:使用“&”操作符
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# # set_a中有的元素,在set_b中也有
result = set_a & set_b
print(result) # {'a'}
2.2:使用intersection() 方法
set.intersection(set1, set2...)
# set中有的元素,在set1,set2中也有
# set1:必填
# set2:选填
返回值为:一个新的集合,不修改原集合
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection(set_b)
print(result) # {'a'}
2.3:使用intersection_update() 方法
set.intersection_update(set1, set2 ... )
# set中有的元素,在set1,set2中也有
# set1:必填
# set2:选填
返回值为:None,修改了原集合set
intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection_update(set_b)
print(result) # None
print(set_a) # {'a'}
3:求并集(合集),所有集合中的所有元素
3.1:使用“|”操作符
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a | set_b
print(result) # {'c', 'd', 'b', 'f', 'a'}
3.2:使用union() 方法
set.union(set1,set2...)
# set,set1,set2等集合中的所有元素
# set1:必填
# set2:选填
返回值为:所有元素组成的一个新的集合,不修改原集合set
set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a.union(set_b)
print(result) # {'b', 'd', 'f', 'a', 'c'}相关文章:
Python基础-数据类型之集合
一、集合的定义 集合:是一个无序的没有重复元素的序列,因此不能通过索引来进行操作 1:使用set()创建集合 set(object) # 参数为一个序列,整型不能作为参数 set_a set("abcb") print(set_a) # {b, a, c} 2&…...
[Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
[css进阶]Grid属性简介 文章目录[css进阶]Grid属性简介典型需求网格容器的属性displaygrid-template-columns和grid-template-rowsgrid-template-areasgrid-templategrid-column-gap grid-row-gapgrid-gapjustify-itemsalign-itemsjustify-contentalign-contentgrid-auto-colum…...
100种思维模型之启发式偏差思维模型-017
曾国藩在给儿子的一封家书中曾写道:余于凡事皆用困知勉行工夫,尔不可求名太骤,求效太捷也。熬过此关,便可少进。再进再困,再熬再奋,自有亨通精进之日。 不急躁不求捷径,小火慢炖,将事…...
微服务 feign远程调用时 显示服务不可用 timed-out and no fallback
目录 第一种: failed and no fallback available 1 服务挂掉了 2 服务没有开启 3 注册中心没注册进去 -> ps: 直接调用的接口 通过网关转发失败 会报503 4 高并发下的服务熔断了 第二种: timed-out and no fallback 2.1 业务场景: A服务一切正常 但是B服务显示timeo…...
第一个Java程序(初识Java)
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录1.Java概述1.1什么是Java1.2Java之父2.0第一个Java程序编译运行.class3.0程序如何跑起来的?3.1J…...
vulnhub LordOfTheRoot_1.0.1
总结:端口敲门,CVE-2015-8660提权, 目录 下载地址 漏洞分析 信息收集 端口敲门 网站分析 方法一 ssh登录提权 方法二 下载地址 LordOfTheRoot_1.0.1.ova (Size: 1.6 GB)Download: http://www.mediafire.com/download/m5tbx0dua05szjm…...
MutationObserver与IntersectionObserver
MutationObserver 出现原因:当我们需要监听元素发生变化时,不借助使元素发生变化的业务动作的情况下,使用无污染方式监听非常困难,为了解决这个问题,MutationObserver诞生! 概述 可以用来监听DOM的任何变化…...
【ESP 保姆级教程】玩转巴法云篇② ——MQTT设备云,MQTT协议下的数据通信
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-21 ❤️❤️ 本篇更新记录 2023-02-21 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
植物大战 仿函数——C++
容器适配器 容器适配器不支持迭代器。栈这个东西,让你随便去遍历,是不好的。他是遵循后进先出的。所以他提供了一个街头top取得栈顶数据。 仿函数 仿函数(functor)是C中一种重载了函数调用运算符(operator()&#x…...
【C语言】浮点型数据在内存中的存储
🚀🚀🚀 如果文章对你有帮助不要忘记点赞关注收藏哦🚀🚀🚀 文章目录⭐浮点数在内存中的存储1.1 🤓举个例子:1.2浮点数存储规则🌈:对于M与E有一些特别规定1.3解释前面题目&…...
impala中的刷新元数据和刷新表
impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。 虽然Hive系统也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满…...
Vscode创建vue项目的详细步骤
目录 一、概述 操作的前提 二、操作步骤 一、概述 后端人员想在IDEA里面创建一个Vue的项目,但是这非常麻烦,用vscode这个前端专用软件创建就会非常快速。 操作的前提 1.安装vscode软件的步骤:vscode下载和安装教程和配置中文插件&#…...
如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,
四、项目 4.1 简单介绍下最近做过的项目 根据自己的项目整理完成,要点: 1)项目背景、业务、需求、核心业务的流程 2)项目架构,B/S还是C/5,数据库用的什么? 中间件用的什么?后台什么语言开发…...
虹科方案|从 uCPE 到成熟的边缘计算平台
基于开放硬件平台,通用客户端设备 (uCPE) 支持快速添加、集成或删除任意数量的集中管理虚拟功能。 为了增加收入并保持竞争优势,托管服务提供商 (MSP) 和企业正在部署 uCPE 以增强业务敏捷性、加速新服务的引入并提高运营效率。最初,uCPE被部…...
计算机是怎么读懂C语言的?
文章目录前言程序环境翻译环境翻译环境分类编译预处理预处理符号预定义符号#define#undef命令行定义条件编译文件包含头文件包含查找规则嵌套文件包含其他预处理指令编译阶段汇编链接🎉welcome🎉 ✒️博主介绍:博主大一智能制造在读ÿ…...
hadoop入门介绍及各组件功能运行关系
文章目录Hadoop 组成部分1.HDFS2.MapReduce 架构概述3. yarn 架构概述4.HDFS、YARN、MapReduce三者关系Hadoop 组成部分 1.HDFS Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。 HDFS 架构概述 主要分为 NameNode (mn):存储文件的元…...
(HP)新手引导使用react-shepherd
1,官方参数文档:https://shepherdjs.dev/docs/tutorial-02-usage.html 2,基本代码 import { ShepherdTour } from react-shepherd; import ./index.less; // 自己的样式文件,用来修改样式 import ./shepherd.less; // 将shephe…...
数据结构:栈和队列(Leetcode20. 有效的括号+225. 用队列实现栈+232. 用栈实现队列)
目录 一.数据结构--栈 1.栈的基本介绍 2.栈的实现 二.数据结构--队列 1.队列的基本介绍 2.队列的实现 三.栈的运用(Leetcode20. 有效的括号225) 1.问题描述 2.问题分析 题解代码: 四.用两个队列实现栈(225. 用队列实现栈 - 力扣(Leetcode&a…...
22.2.19周赛双周赛(贪心、记忆化搜索...)
文章目录双周赛98[6359. 替换一个数字后的最大差值](https://leetcode.cn/problems/maximum-difference-by-remapping-a-digit/)[6361. 修改两个元素的最小分数](https://leetcode.cn/problems/minimum-score-by-changing-two-elements/)贪心排序[6360. 最小无法得到的或值](ht…...
2023最新软件测试面试题(带答案)
1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自江西九江,就读专业是电子商务,毕…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
