python 元组的详细用法

news2025/1/11 17:11:09

当前版本:

  • 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)

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

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

相关文章

机器人制作开源方案 | 红外热成像巡检小车

作者:马跃宁、赵婷婷、牟金晶、邢艳慧、隋鹏飞 单位:哈尔滨剑桥学院 指导老师:韩轶男、齐丹丹 1. 项目简介 1.1 项目背景 21世纪以来,随着我国先进水平不断提高,家家户户用电也是我们必不可少的一部分,…

Tuxera2024版本正式上线!(免费mac读写磁盘工具)

当您获得一台新 Mac 时,它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac,您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件,可以在 Mac 上打开、编辑、复制、移动或删…

centos7 arm服务器编译安装python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包,并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…

golang文件相对路径问题

目录结构 2.具体代码: const dataFile "../data/data.json"_, fileName, _, _ : runtime.Caller(1)dataPath : path.Join(path.Dir(fileName), dataFile)fmt.Println(dataPath)// open filefile, err : os.Open(dataPath)if err ! nil {log.Fatalln(err…

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

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

高校教务系统登录页面JS分析——河北地质大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法,对其进行了一番了解,主要围绕以下几点: 时序数据算法有哪些细分类?时序数据分类算法经典模型?当下时序分类算法模型强baseline?有没有现成的工具? 1…

unity面试题

一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。 二:Unity3d中的碰…

快速更改flutter已有项目的项目名称和id等

如果你使用了别人已有的仓库模板或者想更改现有项目的名称,是一件非常繁琐的工作,需要修改全平台的文件还是相当麻烦的,所以这里推荐一个小工具,可以帮助大家快速实现更改项目名称的目的,这个工具地址:rena…

2019年认证杯SPSSPRO杯数学建模B题(第二阶段)外星语词典全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于统计和迭代匹配的未知语言文本片段提取模型 B题 外星语词典 原题再现: 我们发现了一种未知的语言,现只知道其文字是以 20 个字母构成的。我们已经获取了许多段由该语言写成的文本,但每段文本只是由字母…

SpringBoot从数据库读取数据数据源配置信息,动态切换数据源

准备多个数据库 首先准备多个数据库,主库smiling-datasource,其它库test1、test2、test3 接下来,我们在主库smiling-datasource中,创建表databasesource,用于存储多数据源相关信息。表结构设计如下 创建好表之后&#…

Batch_size对精度和损失的影响研究

1 问题 Batch_size(批尺寸)首先决定的是下降的方向,是机器学习中一个重要参数,所以本文主要探索不同的batch_size对精度和损失的影响。 2 方法 绘制不同batch_size下的训练和验证精度、损失图,并进行对比来研究其影响。 数据集:我…

Burp Suite如何拦截站点请求

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

STM32 USB OTG主机模式的实现方法

为了实现STM32的USB OTG主机模式,我们首先需要了解一些基本概念和原理,然后进行相应的硬件连接和软件编程。在这篇文章中,我们将介绍如何在STM32微控制器上实现USB OTG主机模式,并提供相应的代码示例。 1. STM32 USB OTG主机模式…

智慧公厕:利用物联网、云计算和人工智能实现智能化管理与控制

智慧公厕是指利用传感感知、物联网、互联网、大数据、云计算、自动化控制等先进技术,实现对公厕的智能化管理与控制。通过以上高精尖的信息技术手段,可以实时监测厕所内人体活动状态、人体存在状态、空气质量情况、环境变化情况、设施设备运行状态等信息…

AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

目录 参考概述部署安装环境准备原理和流程图一键启动启动WebAPI 服务启动WebUI服务 Docker部署知识库管理常见问题本地知识库怎么微调?回答不准确 参考 手把手教你搭建本地知识库问答AI机器人 LangChain-Chatchat:基于LangChain和ChatGLM2-6B构建本地离…

flink1.14.5使用CDH6.3.2的yarn提交作业

使用CDH6.3.2安装了hadoop集群,但是CDH不支持flink的安装,网上有CDH集成flink的文章,大都比较麻烦;但其实我们只需要把flink的作业提交到yarn集群即可,接下来以CDH yarn为基础,flink on yarn模式的配置步骤…

读元宇宙改变一切笔记09_硬件与互操作性(下)

1. 移动互联网的继承者 1.1. 要想让元宇宙成为现实,需要开发新的标准,创建新的基础设施,可能还需要对长期存在的TCP/IP协议进行彻底改革 1.1.1. 采用新的设备和硬件,甚至可能打破技术巨头、独立开发者和终端用户之间的权利平衡 …

简单整理FFmpeg相关命令集

FFmpeg相关命令集 简单整理了FFmpeg相关命令,主要包括ffplay播放控制和媒体播放命令、ffmpeg命令相关参数以及常用的提取音视频等命令。 🎡导航小助手🎡 FFmpeg相关命令集1.ffmpeg命令分类查询2.ffplay命令2.1 ffplay播放控制2.2 ffplay命令…

使用ffmpeg进行视频截取

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-sta…