【Python核心数据结构探秘】:元组与字典的完美协奏曲
文章目录
- 🚀一、元组
- ⭐1. 元组查询的相关方法
- ❤️2. 坑点
- 🎬3. 修改元组
- 🌈二、集合
- ⭐1. 集合踩坑
- ❤️2. 集合特点
- 💥无序性
- 💥唯一性
- ☔3. 集合(交,并,补)
- 🎬4. 集合操作方法
- 💥💥增
- 💥💥删
- 💥💥(增)
- 💥💥查
🚀一、元组
- 元组:
tuple
- 元组符号:()
- 元组属于不可变类型(不可变序列)
- 元组是序列类型(容器序列)
- 元组不提供方法修改,但是可以转类型进行操作
⭐1. 元组查询的相关方法
- index 查询指定元素第一次出现的下标
tuple1 = (1, 'hah', '帅')
print(tuple1.index('帅')) # 2
注意:
-
如果元组中不存在你要查找的值,
index()
方法会抛出一个ValueError
异常。 -
由于元组是不可变的,找到索引通常是为了了解结构,而不是为了修改元组内容(因为无法修改)。
-
index()
方法只返回第一个匹配项的索引,即使该值在元组中出现了多次。 -
count 查询指定元素出现的次数
count()
方法,用于统计元组中某个元素出现的次数。
tuple.count(element)
tuple
:你想要在其内部计数的元组。element
:你想要统计其出现次数的元素。
tuple2 = ('帅', 1, '帅', 'hah', '帅')
print(tuple2.count('帅')) # 3
❤️2. 坑点
在Python中,元组是一种不可变的序列类型。当定义一个只包含一个元素的元组时,确实会出现一些特殊情况。如果你直接写作(元素),Python不会把它解析为一个元组,而是将其视为一个单纯的括号包围的表达式。为了明确表示这是一个只有一个元素的元组,你应该在元素后面加上一个逗号,即(元素,)。
- 不加逗号:single_item = (42),这在Python中实际上被视为一个整数42,而不是一个元组。
- 加逗号:single_tuple = (42,),这样就明确地定义了一个只包含一个元素42的元组。
这是因为括号()在Python中还用于表示运算优先级,以及在函数调用时包围参数列表。为了消除歧义,当创建一个只有一个元素的元组时,添加逗号是必要的。
tuple3 = (1)
print(type(tuple3)) # <class 'int'>tuple4 = (1,)
print(type(tuple4)) # <class 'tuple'># 当()中只存在一个元素时, 其后没有 , 号, 那么其类型保持元素原类型
# 有 , 号 ---- 为元组类型
🎬3. 修改元组
# 通过转类型的方式进行修改tuple1 = (1, 'qwe', 'hahah')# 结构相似的数据类型--- list
# 通过list方法直接将其强转为列表
list1 = list(tuple1)
# print(list1) # [1, 'qwe', 'hahah']# 操作数据
list1.append('快乐')
# print(list1) # [1, 'qwe', 'hahah', '快乐']# 转回列表 --- 通过tuple方法
tuple2 = tuple(list1)
print(tuple2) # (1, 'qwe', 'hahah', '快乐')
🌈二、集合
- 集合:set
- 集合符号:{数据1,数据2…}
- 集合属于可变类型
- 集合数据是无序的(无序性)
- 集合每一个元素是唯一的(唯一性)
- 集合不属于序列
集合(set)是一种无序、不重复元素的集合,它具有判定成员资格、消除重复元素等特点。集合的元素必须是不可变的类型,例如整数、浮点数、字符串、元组等,但不能包含可变类型的对象,例如列表、字典等。集合也不是序列类型,因为它们不支持索引、切片等序列操作。
⭐1. 集合踩坑
空集合问题
set1 = {}
print(type(set1)) # <class 'dict'># 原因:集合(set)与字典(dict)符号一样,但内部数据结构不同,当为{}时,它是被识别为字典# 因此 空集合 的创建是用 set()set2 = set()
print(type(set2)) # <class 'set'>
❤️2. 集合特点
💥无序性
set1 = {'hah', 1, '快'}
print(set1)
# 多执行几次,发现数据出来顺序是乱的
# {1, 'hah', '快'}
# {'hah', 1, '快'}
💥唯一性
set2 = {'hah', 1, '快', 1, 1, 1}
print(set2) # {1, '快', 'hah'}
☔3. 集合(交,并,补)
set_a = {1, 2, 'a'}
set_b = {1, 3, 'b'}# 交集 &
set_jiao = set_a & set_b
print(set_jiao) # {1}# 并集 |
set_bing = set_a | set_b
print(set_bing) # {'b', 1, 2, 3, 'a'}# 补集 -
set_bu_b = set_a - set_b # set_b的补集
print(set_bu_b) # {'a', 2}
set_bu_a = set_b - set_a # set_a的补集
print(set_bu_a) # {'b', 3}
🎬4. 集合操作方法
💥💥增
- add: 是把要传入的元素做为一个整个添加到集合中
集合(set)是一个无序的、不重复元素的序列。add() 方法是集合的一个内置方法,用于向集合中添加一个元素。如果添加的元素已经在集合中存在,则该方法不会有任何效果,因为集合的特性决定了它不能包含重复的元素。
set.add(element)
set
:你要向其添加元素的集合。element
:你想要添加到集合中的元素。
set3 = {1, 'ahah', '数据'}
set3.add('shu')
print(set3) # {'ahah', 1, 'shu', '数据'}
💥💥删
- pop: 删除并且返回 set “集合”中的一个不确定的元素, 如果集合为空则引发 KeyError
集合(set)的 pop()
方法用于随机移除集合中的一个元素并返回该元素。因为集合是无序的,所以无法预测哪个元素会被移除。如果集合为空,调用 pop()
方法会引发 KeyError
异常。
element = set.pop()
set
:你要从中移除并返回一个随机元素的集合。element
:被移除的元素。
# 随机删
set4 = {1, 'ahah', '数据'}
set4.pop()
print(set4) # {'ahah', '数据'}
- remove:从 set “集合”中删除指定元素 , 如果不存在则引发 KeyError
集合(set)的 remove()
方法用于移除集合中指定的元素。如果元素存在于集合中,该方法会移除这个元素,并且不返回任何值。如果尝试移除一个不存在于集合中的元素,remove()
方法会引发 KeyError
异常。
语法:
set.remove(element)
set
:你想要从中移除元素的集合。element
:你想要从集合中移除的指定元素。
set5 = {1, 'ahah', '数据'}
set5.remove('ahah')
print(set5) # {1, '数据'}set7 = {1, 'ahah', '数据'}
set7.remove('kuail') # KeyError: 'kuail'
- discard: 如果在 set “集合”中存在元素 x, 则删除 ,不存在不报错
set5 = {1, 'ahah', '数据'}
set5.discard('ahah')
print(set5) # {1, '数据'}set7 = {1, 'ahah', '数据'}
set7.discard('kuail')
print(set7) # {1, 'ahah', '数据'}
- clear: 清空集合里面的所有元素
set8 = {1, 'ahah', '数据'}
set8.clear()
print(set8) # set() --空集合
💥💥(增)
- update:可以在集合里面添加多项
set9 = {1, 'ahah', '数据'}
set9.update([1, '2', 3, '4'])
print(set9) # {1, 3, '4', 'ahah', '2', '数据'}set10 = {1, 'ahah', '数据'}
set10.update('你快乐吗?')
print(set10) # {1, '吗', '数据', 'ahah', '你', '乐', '?', '快'}
💥💥查
- isdisjoint: 是否无交集(无交集:True 有交集:False)
set11 = {1, 2, 'a'}
set12 = {1, 3, 'b'}print(set11.isdisjoint(set12)) # False
- issubset: 判断指定集合是否为该方法参数集合的子集。 是True, 不是False
# a.issubset(b) : 集合a是否为集合b的子集 判断集合b 是否包含 集合aset13 = {1, 2, 'a'}
set14 = {1, 3, 'b'}
set15 = {1}
print(set13.issubset(set14)) # False
print(set15.issubset(set14)) # True
- issuperset : 判断该方法的参数集合是否为指定集合的子集
# a.issuperset(b) : 集合b是否为集合a的子集 判断集合a 是否包含 集合bset13 = {1, 2, 'a'}
set14 = {1, 3, 'b'}
set15 = {1}
print(set13.issuperset(set14)) # False
print(set15.issuperset(set14)) # False
print(set14.issuperset(set15)) # True
- intersection: 返回集合的交集
set16 = {1, 2, 'a'}
set17 = {1, 3, 'b'}print(set16.intersection(set17)) # {1}
- intersection_update: 移除 指定集合 中不存在于 方法中的接收集合 中的元素(修改当前集合,使其只包含与另一个指定集合相同的元素。)
set16 = {1, 2, 'a'}
set17 = {1, 3, 'b'}
# 移除 set16 中不存在于 set17 中的元素
set16.intersection_update(set17)
print(set16) # {1}
print(set17) # {1, 3, 'b'}# 使用 intersection_update() 方法同时获取多个集合的交集,并修改 set1
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7}
set3 = {3, 4, 5}
set4 = {1, 3, 5}
set1.intersection_update(set2, set3, set4)
print(set1) # 输出结果为 {5}
- symmetric_difference: 返回两个集合中不重复的元素集合。
set18 = {1, 2, 'a'}
set19 = {1, 3, 'b'}print(set18.symmetric_difference(set19)) # {2, 3, 'b', 'a'}
- symmetric_difference_update: 用于修改当前集合,使其只包含存在于当前集合或另一个指定集合中的元素,但不包含同时存在于两个集合中的元素。
set18 = {1, 2, 'a'}
set19 = {1, 3, 'b'}set18.symmetric_difference_update(set19)
print(set18) # {2, 3, 'a', 'b'}
print(set19) # {'b', 1, 3}
- union: 返回两个集合的并集两个集合的并集
set20 = {1, 2, 'a'}
set21 = {1, 3, 'b'}print(set20.union(set21)) # {'a', 1, 2, 3, 'b'}
相关文章:
【Python核心数据结构探秘】:元组与字典的完美协奏曲
文章目录 🚀一、元组⭐1. 元组查询的相关方法❤️2. 坑点🎬3. 修改元组 🌈二、集合⭐1. 集合踩坑❤️2. 集合特点💥无序性💥唯一性 ☔3. 集合(交,并,补)🎬4. …...
Golang | Leetcode Golang题解之第137题只出现一次的数字II
题目: 题解: func singleNumber(nums []int) int {a, b : 0, 0for _, num : range nums {b (b ^ num) &^ aa (a ^ num) &^ b}return b }...
Spring和SpringBoot的特点
1.Spring的特点 1.IOC和AOP是Spring的两大核心特性,即控制反转和依赖注入。 2.松耦合:IOC和AOP两大特性可以尽可能地将对象之间的关系解耦 3.可配置:提供外部化配置的方式,可以灵活地配置容器及容器中的Bean 4.一站式:…...
怎么使用join将数组转为逗号分隔的字符串
在JavaScript中,你可以使用Array.prototype.join()方法将一个数组转换为逗号分隔的字符串。join()方法接受一个可选的参数,该参数指定了数组元素之间的分隔符。如果不提供参数,则默认使用逗号(,)作为分隔符。 下面是一…...
Web前端博客论坛:构建、运营与用户体验的深度解析
Web前端博客论坛:构建、运营与用户体验的深度解析 在数字化浪潮的推动下,Web前端博客论坛成为了广大开发者交流技术、分享经验的重要平台。如何构建一个功能齐全、运营有序的博客论坛,以及如何提升用户体验,是摆在每一位前端开发…...
Java从入门到放弃
线程池的主要作用 线程池的设计主要是为了管理线程,为了让用户不需要再关系线程的创建和销毁,只需要使用线程池中的线程即可。 同时线程池的出现也为性能的提升做出了很多贡献: 降低了资源的消耗:不会频繁的创建、销毁线程&…...
基于51单片机的车辆动态称重系统设计
一 动态称重 所谓动态称重是指通过分析和测量车胎运动中的力,来计算该运动车辆的总重量、轴重、轮重和部分重量数据的过程。动态称重系统按经过车辆行驶的速度划分,可分为低速动态称重系统与高速动态称重系统。因为我国高速公路的限速最高是120,所以高速动态称重系统在理论…...
C语言之常用字符串函数总结、使用和模拟实现
文章目录 目录 一、strlen 的使用和模拟实现 二、strcpy 的使用及模拟实现 三、strcat 的使用和模拟实现 四、strcmp 的使用和模拟实现 五、strncpy 的使用和模拟实现 六、strncat 的使用和模拟实现 七、strncmp 的使用和模拟实现 八、strstr 的使用和模拟实现 九、st…...
【JMeter接口测试工具】第二节.JMeter项目实战(上)【实战篇】
文章目录 前言项目实战零、接口测试流程一、测试数据准备二、接口功能测试三、掌握测试用例编写四、自动化脚本架构搭建总结 前言 零、接口测试流程 1、制定测试计划,分配任务 2、从 API 文档中提取接口清单:对 API 文档简化,提高测试效率,接口清单就是对 API 文档…...
Ansible——fetch模块
目录 参数 示例1:最基本的用法 示例2:指定目标目录和主机名子目录 示例3:flat 参数设置为 yes 示例4:处理源文件不存在的情况 示例5:验证文件校验和 示例 Playbook 1. 拉取远程主机上的 syslog 文件 2. 直接…...
HTTP常见响应状态码
1xx:正在处理中 100 Continue:服务器确认收到了请求的第一部分,并告知客户端继续发送剩余的请求。 101 Switching Protocols:服务器根据客户端的请求,同意切换到另一个协议。 2xx:成功响应 200 OK&#…...
如何制定工程战略
本文介绍了领导者如何有效制定工程战略,包括理解战略核心、如何收集信息并制定可行的策略,以及如何利用行业最佳实践和技术债务管理来提升团队效能和产品质量。原文: How to Build Engineering Strategy 如果你了解过目标框架(如 OKR…...
认识和使用 Vite 环境变量配置,优化定制化开发体验
Vite 官方中文文档:https://cn.vitejs.dev/ 环境变量 Vite 内置的环境变量如下: {"MODE": "development", // 应用的运行环境"BASE_URL": "/", // 部署应用时使用的 URL 前缀"PROD": false, //应用…...
Java18新特性总结
Java 18作为Java编程语言的一个重要更新,引入了一系列新特性和改进,旨在提高开发者的生产力和程序的性能。以下是Java 18的主要新特性概述: 元编程功能: Java 18引入了元注释和元类型声明的功能,允许开发人员在编译时…...
理解 Java 中的 `final` 关键字
理解 Java 中的 final 关键字 final 关键字是 Java 编程语言中一个重要的修饰符,它可以应用于类、方法和变量。理解 final 的用法和作用对于编写稳健和高效的 Java 代码至关重要。在本文中,我们将深入探讨 final 关键字的各种用法及其意义。 一、final…...
磁盘未格式化:深度解析、恢复方案及预防之道
在当今这个信息化爆炸的时代,磁盘未格式化问题无疑成为了众多用户头疼的难题。当我们的存储设备突然提示“磁盘未格式化”时,数据的丢失与恢复的挑战便摆在了我们面前。本文将深入解析磁盘未格式化的现象、原因,并给出两种有效的数据恢复方案…...
JWT 从入门到精通
什么是 JWT JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案 JSON Web Token Introduction - jwt.ioLearn about JSON Web Tokens, what are they, how they work, when and why you should use them.https://jwt.io/introduction 一、常见会…...
31-捕获异常(NoSuchElementException)
在定位元素的时候,经常会遇到各种异常,遇到异常又该如何处理呢?本篇通过学习selenium的exceptions模块,了解异常发生的原因。 一、发生异常 打开百度搜索首页,定位搜索框,此元素id"kw"。为了故意…...
使用Spring Boot设计对象存储系统
对象存储系统是一种以对象为存储单位的存储架构,适合存储大量非结构化数据,如图片、音视频文件、文档等。MinIO是一个高性能的对象存储系统,基于开源和云原生的设计理念。本文将讨论如何使用Spring Boot设计一个类似MinIO的对象存储系统。 目…...
Apple开发者macOS设备与描述文件Profile创建完整过程
安装并打开Apple Configurator 新建描述文件 输入macOS平台的描述文件的相关信息,然后选择证书 选择一个可用证书 存储描述文件 存储成功如下: 使用文本编辑器打开刚才保存的描述文件,找到设备名与UDID...
SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …...
mysql设置允许外部ip访问,局域网IP访问
(支持MYSQL8版本) 1. 登录进入mysql;mysql -uroot -p输入密码进入 2. 输入以下语句,进入mysql库,查看user表中root用户的访问 use mysql; select host,user from user; 3. 更新user表中root用户域属性,…...
mac虚拟光驱工具:Daemon Tools for Mac
Daemon Tools for Mac是一款功能强大的虚拟光驱工具,它为用户提供了在Mac上模拟物理光驱的能力,从而方便用户处理各种光盘映像文件。以下是关于Daemon Tools for Mac的详细介绍: 守护进程工具:Daemon Tools不仅是一个简单的虚拟光…...
软考 系统架构设计师系列知识点之杂项集萃(32)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(31) 第51题 网络逻辑结构设计的内容不包括( )。 A. 逻辑网络设计图 B. IP地址方案 C. 具体的软硬件、广域网连接和基本服务 D. 用户培训计划 正确答案&am…...
Web--CSS基础
文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中,作用于当前标签 <img src "/imges/logo.jpg" alt "" style "width 400"…...
服务部署:Linux系统部署C# .NET项目
1. 安装 .NET SDK 首先,你需要在你的 Linux 系统上安装 .NET SDK。 Ubuntu系统: 下载 Microsoft 包配置文件 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 这个命令使用 wge…...
【机器学习】基于卷积LSTM的视频预测
1. 引言 1.1 LSTM是什么 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)变体,旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念,使得…...
细说wayland和X11
文章目录 协议介绍协议区别开发差异 Wayland和X11都是用于Linux和其他类Unix系统的显示服务器协议。它们负责在用户和应用程序之间的交互中管理屏幕的输出以及输入设备的输入。 协议介绍 X11通常称为X Window System,是一个历史悠久的显示服务器,自1987…...
数据结构:二叉树的实现
目录 二叉树的遍历方式 前序遍历: 中序遍历: 后序遍历: 二叉树的基本结构和功能 基本结构: 基本功能: 二叉树功能的实现思路 二叉树功能的实现 1、构建一个二叉树 2、二叉树的销毁 3、计算二叉树里的节点个数 4、得…...
Helm离线部署Rancher2.7.10
环境依赖: K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中,Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…...
公安机关网站备案指南/制作网站的基本流程
计算机在安装wamp环境下php运行时出现:无法启动此程序,因为计算机中丢失OCI.dll尝试重新安装该程序以解决此问题的问题,主要原因是php中的配置文件错误造成的:具体方法如下:错误图片如果提示是计算机中丢失libcs.dll1、首先在网上…...
台州市建设招标投标网站/网络游戏推广员的真实经历
有些时候需要调用系统内部的一些命令,或者给某个应用命令传不定参数时可以使用该模块。初识 Subprocess 模块 Subprocess 模块提供了多个方法来运行额外的进程。在 Python2.7 的时候使用的方法主要有 call(),check_call(), check_output(),到了 Python3.5 的时候加入…...
阿里云服务器ecs建站教程/竞价推广托管
我们知道,cookie是有有效期的,cookie的默认有效期是在从cookie生成后一直到浏览器关闭,我们可以设置cookie的有效期来指定它的失效期,用户也可以禁止cookie也可以手动的删除cookie。cookie是一小段信息,以键/值对的信息…...
网站建设环保/邯郸seo优化
from:[url]http://www.microsoft.com/china/technet/sysinternals/utilities/AccessChk.mspx[/url]作者:Mark Russinovich简介为了确保创建安全的环境,Windows 管理员通常需要了解特定用户或用户组对文件、目录、注册表项和 Windows 服务等资源具有哪种访…...
wordpress伪静态 宝塔/如何制作一个宣传网页
2019独角兽企业重金招聘Python工程师标准>>> Unity中相机的应用遮罩应用: camera.cullingMask ~(1 << x); // 渲染除去层x的所有层 camera.cullingMask & ~(1 << x); // 关闭层x camera.cullingMask | (1 << x); // 打开…...
代理加盟项目/seo为什么要进行外部优化
数据:是运送信息的实体。 信号:则是数据的电气的或电磁的模拟数据:运送信息的模拟信号。模拟信号:连续变化的信号。 数字信号:取值为有限的几个离数字数据:取值为不连续数值的数据。单工通信:即…...