9.30Python基础-元组(补充)、字典、集合
Python元组(tuple)补充
1、元组的不可变性
元组(tuple)是Python中的一种内置数据类型,用于存储不可变的序列。虽然元组本身不可变,但元组内的元素如果是可变对象(如列表),则其内容可以改变。
示例:元组连接
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 合并元组
tup3 = tup1 + tup2
print(tup3)
注意:以下操作是非法的
# tup1[0] = 100 # 尝试修改元组元素将引发错误
2、删除整个元组
元组不能删除单个元素,但可以使用del语句删除整个元组。
示例:删除元组
tup = ('openAI', 'hqyj', 100, 200)
print(tup)
del tup
# print(tup) # 此行代码将引发错误,因为tup已被删除
3、元组运算
元组支持一些基本运算,如连接、复制和成员检查。
示例:元组运算
# 连接元组
print((1, 2, 3) + (4, 5, 6))
# 复制元组
print(('Hi!',) * 4)
# 成员检查
print(3 in (1, 2, 3))
# 迭代元组
for x in (1, 2, 3):print(x)
4、元组不可变性的实质
元组的不可变性是指其内存地址指向的数据不可变,但元组内可变对象的内容可以改变。
示例:元组内可变对象
tup = (1, 2, [3, 4], 5)
# 以下操作是合法的
tup[2].append(6)
print(tup)
7、元组常用API
Python提供了几个内置函数来处理元组。
示例:使用元组API
# 计算元组长度
print(len((1, 2, 3)))
# 获取元组中的最大值
print(max((1, 2, 3)))
# 获取元组中的最小值
print(min((1, 2, 3)))
# 将列表转换为元组
print(tuple([1, 2, 3]))
Python字典(dict)
字典(dict)是Python中的一种内置数据类型,用于存储键值对。字典是可变的,可以根据需要添加、修改或删除键值对。
1、创建字典
字典可以通过多种方式创建,但不应使用dict作为变量名。
示例:创建字典
d1 = {} # 创建空字典
d2 = dict() # 使用内建函数创建字典
d3 = {"name": "karen", "age": 23}
d4 = dict({"name": "jack", "age": 24})
print(d3) # 打印字典
print(len(d3)) # 查看字典的长度
print(type(d3)) # 查看类型
2、访问字典值
可以通过键来访问字典中的值。
示例:访问字典值
mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'}
print(mydic['Name'])
print(mydic['Age'])
注意:访问不存在的键将引发错误
# print(mydic['Alice']) # 此行代码将引发错误
3、修改字典
可以向字典中添加新的键值对或修改现有的键值对。
示例:修改字典
mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'}
mydic['Age'] = 8 # 更新值
mydic['School'] = "华清" # 添加新的键值对
print(mydic['Age'])
print(mydic['School'])
4、删除字典元素
可以使用del语句或字典方法来删除字典中的元素。
示例:删除字典元素
mydic = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del mydic['Name'] # 删除键 'Name'
mydic.clear() # 清空字典
# del mydic # 删除整个字典
5、字典常用API
操作字典的函数:
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | len(dict) | 计算字典元素个数,即键的总数。 |
| 2 | str(dict) | 输出字典,可以打印的字符串表示。 |
| 3 | type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
字典的方法:
| 序号 | 函数及描述 |
|---|---|
| 1 | dict.clear()删除字典内所有元素 |
| 2 | dict.copy()返回一个字典的浅复制 |
| 3 | dict.fromkeys(seq)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
| 4 | dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
| 5 | key in dict如果键在字典dict里返回true,否则返回false |
| 6 | dict.items()以列表返回一个视图对象 |
| 7 | dict.keys()返回一个视图对象 |
| 8 | dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
| 9 | dict.update(dict2)把字典dict2的键/值对更新到dict里 |
| 10 | dict.values()返回一个视图对象 |
| 11 | pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。 |
| 12 | popitem()返回并删除字典中的最后一对键和值。 |
Python集合(set)
集合(set)是Python中的一种内置数据类型,用于存储无序且不重复的元素集合。集合非常适合于需要进行成员检测、消除重复元素以及执行集合理论运算(如并集、交集和差集)的场景。
1、创建集合
可以使用大括号或set()函数来创建集合,但请注意区分空集合与空字典。
示例:创建集合
# 使用大括号创建集合
set1 = {1, 2, 3, 4}
print("集合 set1:", set1)
# 使用 set() 函数从列表创建集合
set2 = set([4, 5, 6, 7])
print("集合 set2:", set2)
# 使用 set() 函数从元组创建集合
set3 = set((4, 5, 6, 7))
print("集合 set3:", set3)
2、添加元素
可以向集合中添加单个元素或多个元素。
示例:添加元素到集合
s1 = set((4, 5, 6, 7))
s1.add(100) # 添加单个元素
print("添加单个元素后的集合 s1:", s1)
s1.update([200, 300]) # 添加多个元素,可以是列表、元组、字典等
print("添加多个元素后的集合 s1:", s1)
3、移除元素
可以使用remove()、discard()或pop()方法来移除集合中的元素。
示例:移除集合中的元素
s1 = {10, 20, 30}
s1.remove(20) # 移除元素,如果元素不存在则引发错误
print("移除元素后的集合 s1:", s1)
s1.discard(40) # 移除元素,如果元素不存在不会引发错误
print("尝试移除不存在的元素后的集合 s1:", s1)
s1.pop() # 随机移除并返回一个元素
print("随机移除元素后的集合 s1:", s1)
4、计算集合元素个数
使用len()函数可以计算集合中元素的数量。
示例:计算集合元素个数
s1 = {10, 20, 30}
print("集合 s1 的长度:", len(s1)) # 输出集合的长度
5、清空集合
使用clear()方法可以清空集合中的所有元素。
示例:清空集合
s1 = {10, 20, 30}
s1.clear() # 清空集合
print("清空后的集合 s1:", s1) # 输出空集合
6、判断元素是否在集合中
使用in关键字可以检查元素是否存在于集合中。
示例:检查元素是否存在
s1 = {10, 20, 30}
print("20 是否在集合 s1 中:", 20 in s1) # 输出 True,因为 20 在集合中
7、集合内置方法完整API
Python集合提供了丰富的内置方法来执行集合操作。
集合的方法
| 方法 | 描述 |
|---|---|
| add() | 向集合添加元素 |
| clear() | 清除集合中的所有元素 |
| copy() | 返回集合的浅复制 |
| difference() | 返回多个集合的差集 |
| difference_update() | 移除集合中的元素,该元素在指定的集合也存在 |
| discard() | 删除集合中指定的元素 |
| intersection() | 返回集合的交集 |
| intersection_update() | 用集合的交集更新集合 |
| isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True |
| issubset() | 判断指定集合是否为该方法参数集合的子集 |
| issuperset() | 判断该方法的参数集合是否为指定集合的超集 |
| pop() | 随机移除元素 |
| remove() | 移除指定元素 |
| symmetric_difference() | 返回两个集合中不重复的元素集合 |
| symmetric_difference_update() | 用集合的对称差集更新集合 |
| union() | 返回两个集合的并集 |
| update() | 更新集合,添加指定集合中的元素 |
| len() | 计算集合元素个数 |
| 使用这些方法,可以灵活地对集合进行操作以满足不同的需求。 |
相关文章:
9.30Python基础-元组(补充)、字典、集合
Python元组(tuple)补充 1、元组的不可变性 元组(tuple)是Python中的一种内置数据类型,用于存储不可变的序列。虽然元组本身不可变,但元组内的元素如果是可变对象(如列表)ÿ…...
桥接模式和NET模式的区别
桥接模式和NET模式的区别 NAT模式: NAT:网络地址转换(模式):借助宿主机来上网,没桥接那么麻烦,只用配置DNS即可。 缺点:扎根于宿主机,不能和局域网内其它真实的主机进行…...
Pigar:Python 项目的依赖管理利器
🌟 引言 在Python项目开发过程中,依赖管理是一个不可忽视的环节。一个精确且易于维护的requirements.txt文件对于项目的部署和协作至关重要。今天,我们将介绍一款名为Pigar的自动生成requirements.txt文件的依赖管理工具,它通过一…...
泰勒图 ——基于相关性与标准差的多模型评价指标可视化比较-XGBoost、sklearn
1、基于相关性与标准差的多模型评价指标可视化比较 # 数据读取并分割 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split plt.rcParams[font.family] = Times New Roman plt.rcParams[axes.unic…...
记录|Modbus-TCP产品使用记录【摩通传动】
目录 前言一、摩通传动实验图1.1 配置软件 IO_Studio1.2 测试软件Modbus Poll1.2.1 读写设置测试1.2.2 AI信号的读取 1.3 对应的C#连接Modbus的测试代码如下【自制,仅供参考】1.4 最终实验图 更新时间 前言 参考文章: 自己需要了解和对比某些产品的Modbu…...
工业交换机的RMON
工业交换机在现代网络中扮演着至关重要的角色,它不仅负责数据的高效传输,还具备强大的监控和管理能力。其中,RMON(远程监控)功能使得交换机的性能得以进一步提升,成为网络管理的重要工具。RMON提供了一种先…...
生态遥感数据下载分享
中国土壤湿度/土壤水分数据集(2000-2020) 下载网站:https://poles.tpdc.ac.cn/zh-hans/data/49b22de9-5d85-44f2-a7d5-a1ccd17086d2/#:~:text%E6%88%91%E4%BB%AC%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%AD%E5%9B%BD%E8%8C%83 note: The data can …...
ECharts 快速使用
最终效果 使用介绍 echarts图表的绘制,大体分为三步: 根据 DOM实例,通过 echarts.init方法,生成 echarts实例构建 options配置对象,整个echarts的样式,皆有该对象决定最后通过实例.setOption方法…...
进程--消息队列和共享内存
目录 消息队列 创建消息队列 删除消息队列 发送消息和接收 消息队列 消息队列就是一个消息的列表,进程可以在消息队列中添加消息和的读取消息 消息队列具有FIFO的特性,具有无名管道与有名管道各自的优势,可以支持任意两个进程的进程间通讯…...
useCallback()
官网直达:https://zh-hans.react.dev/reference/react/useCallback 点击按钮,子组件会重新渲染 import { memo, useState, useCallback } from react;const Child (props) > {console.log(我是子组件!我在渲染呢!࿰…...
Python面试题精选及解析--第二篇
在Python的面试中,除了基础语法和常用库的知识外,面试官往往还会通过一系列的问题来考察应聘者的逻辑思维、问题解决能力以及项目经验。以下是一些精心挑选的Python面试题及其详细答案,旨在帮助求职者更好地准备面试。 面试题一:…...
Linux操作常用问题
目录 Ubuntu操作问题vi编辑方向键键盘乱码回退键不能使用的问题解决问题的方法 Ubuntu操作问题 vi编辑方向键键盘乱码回退键不能使用的问题 编辑/etc/systemd/resolved.conf文件来修改DNS,结果编辑时键盘乱码,按下方向键会出现ABCD,且回退键…...
汽车发动机系统(ems)详细解析
汽车发动机系统EMS,即Engine-Management-System(发动机管理系统),是现代汽车电子控制技术的重要组成部分。以下是对汽车发动机系统EMS的详细解析,内容将涵盖其定义、工作原理、主要组成、功能特点、技术发展以及市场应…...
对比学习训练是如何进行的
对比学习(Contrastive Learning)是一种自监督学习的方法,旨在通过拉近相似样本的表示、拉远不相似样本的表示来学习特征表示。在训练过程中,模型并不依赖标签,而是通过样本之间的相似性进行学习。以下是对比学习的基本…...
React 生命周期 - useEffect 介绍
在 React 中,useEffect 钩子可以被看作是函数组件中的一种副作用管理工具,它的行为可以模拟类组件中的不同生命周期方法。useEffect 的执行时机取决于其依赖项数组(第二个参数)的设置方式。 根据 useEffect 的使用方式,…...
OpenCV-指纹识别
文章目录 一、意义二、代码实现1.计算匹配点2.获取编号3.获取姓名4.主函数 三、总结 一、意义 使用OpenCV进行指纹识别是一个复杂且挑战性的任务,因为指纹识别通常需要高精度的特征提取和匹配算法。虽然OpenCV提供了多种图像处理和计算机视觉的工具,但直…...
IPD的核心思想
IPD是一套领先的、成熟的研发管理思想、模式和方法。它是根据大量成功的研发管理实践总结出来的,并被大量实践证明的高效的产品研发模式。 那么,按照IPD来开展产品研发与产品管理工作,应该基于哪些基本思想或原则?市场导向、客户…...
如何在算家云搭建MVSEP-MDX23(音频分离)
一、MVSEP-MDX23简介 模型GitHub网址:MVSEP-MDX23-music-separation-model/README.md 在 main ZFTurbo/MVSEP-MDX23-音乐分离模型 GitHub 上 在音视频领域,把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题。音波混合的物理特性导致在没有…...
常用的Java安全框架
Spring Security: 就像Java安全领域的“瑞士军刀”,功能全面且强大。 支持认证、授权、加密、会话管理等安全功能。 与Spring框架无缝集成,使用起来特别方便。 社区活跃,文档丰富,遇到问题容易找到解决方案。 Apach…...
使用 PHP 的 strip_tags函数保护您的应用安全
在现代 web 开发中,处理用户输入是一项常见的任务。然而,用户输入的内容往往包含 HTML 或 PHP 标签,这可能会导致安全漏洞,如跨站脚本攻击(XSS)。为了解决这个问题,PHP 提供了一个非常有用的函数…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
