python 元组的详细用法


当前版本:

  • Python 3.8.4

        

文章目录如下

1. 介绍元组

2. 定义元组

3. 访问元组

4. 查询元组


        

1. 介绍元组

    元组(Tuple)是一个有序的、不可变的数据序列。它可以包含各种类型的数据,例如数字、字符串、列表等。元组使用圆括号()来表示,其中的各个元素之间用逗号分隔。

    与列表(List)不同,元组是不可变的,也就是说,一旦创建后,就不能修改其元素的值。这意味着不能向元组中添加、删除或修改元素。这种属性使得元组在某些情况下更加安全和可靠,例如作为字典的键值。

元组包含如下优点:

  • 不可变性:元组的元素不可修改,这种特性使得元组在需要保护数据不被意外修改的场景下非常有用。例如,使用元组来表示一些常量或配置信息,确保它们不会被修改。

  • 可用作字典的键:由于元组的不可变性,它们可以作为字典的键。而列表等可变对象则不能作为字典的键,因为字典的键需要是可哈希的。

  • 性能优化:相对于列表,元组在内存占用和迭代速度方面具有优势。元组的大小和结构在创建后不会改变,这使得在创建和访问元组时更加高效。

  • 作为函数返回值:元组常用于函数返回多个值的情况。函数可以返回一个元组,然后通过解包操作将元组的值分配给多个变量。

        

2. 定义元组

元组可以直接通过圆括号或 tuple 来定义。

T = ()        # 定义一个空元组
T = tuple()   # 定义一个空元组

        

注意:当定义的元组只有一个元素时,需要加一个逗号。

T = ("AAA", )

如果不加逗号会被识别为字符串

        

元组中的对象可以是数字、字符串、列表、元组、字典、集合等。

# 元组中可以包含数字、字符串、列表、元组、字典、集合等
T = (1, 2.1, 'AAA', [20], (30,), {'age':20}, {3,4})

        

定义元组后,里面的值是不可变的

要么只能重新赋值

或者单独使用一个元组拼接其他元组

T1 = (1, 2)
T2 = ("A", "B")
T3 = T1 + T2 + ("C", "D")

 

        

如果实在需要修改元组中的元素,那么可以先将元组转换为列表后更改,再将其转换回元组

# 定义一个元组
L = ("A", "B", 1, 2, 3)

# 将元组转换为列表后,修改第2个元素
L = list(L)
L[1] = "EEE"

# 再将该列表转换回元组
L = tuple(L)

         

3. 访问元组

  • 访问元组最多的方式是通过索引取出单个元素或多个元素,或者使用遍历的方式将其全部取出,逐个处理。

1、通过索引来访问元组,索引的值从0开始,每个索引值对应一个元素。第1个元素的索引为0,第2个元素的索引为1,以此类推。。。

元组元素: A  B  C  D  E
正序索引: 0  1  2  3  4
反向索引:-5 -4 -3 -2 -1

【案例一】访问单个元素

  • 变量[索引] :在需要访问的变量后面加方括号,在方括号中指定索引值即可。
T = ("A", "B", "C", "D", "E")
T[0]    # 访问第1个元素
T[2]    # 访问第3个元素
T[-1]   # 访问最后一个元素

        

【案例二】使用切片访问多个元素

  • 变量[起始索引 : 结束索引] :指定一个开始索引值和结束索引值(范围性访问),最多只访问结束索引的前一个。
T = ("A", "B", "C", "D", "E")
T[1:3]    # 访问索引为1、2的值
T[:2]     # 访问前2个元素
T[-2:]    # 访问后2个元素

        

【案例三】利用步长跳过一些元素

  • 变量[起始索引 : 结束索引 : 步长] :指定开始索引和结束索引后可选步长,如果不指定默认为1
T = ("A", "B", "C", "D", "E")
T[:4:2]    # 访问前4个元素,步长为2
T[::3]     # 访问全部元素,步长为3 

        

2、通过遍历元素来访问(使用for循环将元素全部遍历后进行处理)

T = (1, 2.1, 'AAA', [20], (30,), {'age':20}, {3,4})
# 遍历元组中的元素
for i in T:
    print(f"当前元素为:{i}")

        

4. 查询元组

  • 这个章节主要介绍统计元素的数量,求最大值、最小值等。

1、判断元组是否包含某个元素

T = (1, 2, 3, 'AAA', 'BBB')

# 判断AAA是否在元组内
'AAA' in T

# 判断0是否在元组内
0 in T

        

2、统计元素的个数

T = (1, 2, 3, 'AAA', 'BBB')
len(T)    # 统计长度

        

3、统计某个元素在元组中出现的次数

T = (1, 2, 3, 'AAA', 'BBB')
T.count('AAA')    # 统计某个元素出现的次数

        

4、求最大值(元组内仅支持数字)

L = (1, 18, 5, 20)
max(L)

        

 5、求最小值(元组内仅支持数字)

L = (1, 18, 5, 20)
min(L)

        

 6、求和(元组内仅支持数字)

L = (1, 18, 5, 20)
sum(L)

        

  7、求平均值(元组内仅支持数字)

L = (1, 18, 5, 20)
avg = sum(L) / len(L)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

书生·浦语大模型实战营第四节课笔记及作业

XTuner 大模型单卡低成本微调实战 1 Finetune简介 大语言模型LLM是在海量的文本内容基础上,以无监督或半监督方式进行训练的。海量的文本内容赋予了大模型各种各样的行业知识。但是如果直接把大模型的知识用于生产实践,会发现回答不大满意。微调的目的…

【RL】(task1)绪论、马尔科夫过程、动态规划、DQN(更新中)

note 文章目录 note一、马尔科夫过程二、动态规划DQN算法时间安排Reference 一、马尔科夫过程 递归结构形式的贝尔曼方程计算给定状态下的预期回报,这样的方式使得用逐步迭代的方法就能逼近真实的状态/行动值。 有了Bellman equation就可以计算价值函数了马尔科夫过…

微服务架构设计核心理论:掌握微服务设计精髓

文章目录 一、微服务与服务治理1、概述2、Two Pizza原则和微服务团队3、主链路规划4、服务治理和微服务生命周期5、微服务架构的网络层搭建6、微服务架构的部署结构7、面试题 二、配置中心1、为什么要配置中心2、配置中心高可用思考 三、服务监控1、业务埋点的技术选型2、用户行…

Burp Suite如何拦截站点请求

Burp Suite是一款强大的Web渗透测试工具,可以用于拦截、修改和分析Web应用程序的请求和响应。要使用Burp Suite拦截站点请求有两个方案。我会倾向选用方案二,因为它不会影响本地电脑代理配置。 1. 方案一 安装Burp Suite:首先,您…

【C语言】ipoib驱动 - ipoib_cm_post_receive_nonsrq_rss函数

一、ipoib_cm_post_receive_nonsrq_rss函数定义 static int ipoib_cm_post_receive_nonsrq_rss(struct net_device *dev,struct ipoib_cm_rx *rx, int id) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_recv_ring *recv_ring priv->recv_ring rx->ind…

提升开发效率的google插件

在如今的软件开发领域,Google Chrome浏览器的开发者插件扮演着至关重要的角色,为开发人员提供了丰富的工具和功能,从而提高了开发效率。下面介绍几款强大的 Google 插件,它们在不同方面为开发者提供了便利,并能显著提升…

力扣每日一题--2088. 统计农场中肥沃金字塔的数目

看到这道题有些人很容易放弃,其实这道题不是很难,主要是题目长,读的容易让人放弃,但是 只要抓住一些性质就可以解决该问题。 本题中的定义放到图像里其实就是个金字塔,下层的那部分比上一层的那部分,长度加…

51单片机HC-SR04超声波测距lcd1602显示(程序+ad硬件设计+文档说明)

本帖主控使用STC89C52单片机,超声波测距采用HC-SR04模块,包含ad硬件设计和文档。 测距原理 超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距SCt/2,式中的C为超声波波速。由于超声…

【GitHub】如何删除GitHub仓库里的文件夹(区分 rm/git rm)

删除GitHub仓库里的一个文件夹 1、复制仓库地址2、在本地新建一个空文件夹3、在空文件夹内,右键选择Git Bash Here4、弹出GIT Bash框5、克隆远程仓库6、拉取远程仓库7、查看仓库里的文件8、选择想要删除的文件夹进行删除9、提交删除说明10、更新GitHub远程仓库 在gi…

微信小程序-----wxss模版样式

目录 前言 一、WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 二、rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算 三、样式导入 1. 什么是样式导入 2. import 的语法格式 四、全局样式和局部样式 1. 全局样式 2. 局部样式 前言 上一期…

伪装目标检测模型论文阅读之:Zoom in and out

论文链接:https://arxiv.org/abs/2203.02688 代码;https://github.com/lartpang/zoomnet 1.摘要 最近提出的遮挡对象检测(COD)试图分割视觉上与其周围环境融合的对象,这在现实场景中是非常复杂和困难的。除了与它们的背景具有高…

漏洞复现-金和OA jc6/servlet/Upload接口任意文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

【RT-DETR有效改进】ShapeIoU、InnerShapeIoU关注边界框本身的IoU(包含二次创新)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

【Linux】Linux系统编程——pwd命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 pwd(Print Working Directory)命令用于显示用户当前工作目录的完整路径。这是一个常用的命令,帮助用户确定他们目前所在的目录位置。 2.命令格式 基本的 pwd 命令…

基于Redis+Lua的分布式限流

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。 前面我们了解了如何利用Nginx做网关层限流&#xf…

2024年AMC8历年真题练一练和答案详解(9),以及全真模拟题

“熟读唐诗三百首,不会作诗也会吟”,反复做真题、吃透真题、查漏补缺并举一反三是在各类考试、比赛中得高分的重要学习方法之一,参加AMC8竞赛也是如此。 六分成长继续为您分享AMC8历年真题,最后几天,通过高质量的真题来体会快速思…

爬虫-8-数据存储-mysql

#mysql占空间最小吧,数据存储没问题吧 (//∇//)

23111 网络编程 day2

思维导图 重打代码 #include<myhead.h> #define SER_IP "192.168.122.150" //服务器ip #define SER_PORT 8888 //服务器端口int main(int argc, const char *argv[]) {//1.创建用于连接的套接字int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror("…

压缩编码之JPEG变换编码不同压缩率的模拟的实现——数字图像处理

原理 离散余弦变换&#xff08;DCT&#xff09;和量化是图像压缩中的两个关键步骤&#xff0c;尤其是在JPEG压缩标准中。 离散余弦变换&#xff08;DCT&#xff09;&#xff1a;DCT的目的是将图像从空间域&#xff08;即像素表示&#xff09;转换到频率域。这种转换后&#x…

dp--62. 不同路径/medium 理解度A

62. 不同路径 1、题目2、题目分析3、复杂度最优解代码示例4、抽象与扩展 1、题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中…