Python数据结构:元组(Tuple)详解

在这里插入图片描述

1.介绍和基础操作

  Python中的元组(Tuple)是不可变有序序列,可以容纳任意数据类型(包括数字、字符串、布尔型、列表、字典等)的元素,通常用圆括号() 包裹。与列表(List)类似,元组可以通过索引(Index)访问其元素,也可以使用切片(Slice)截取部分元素。但是,元组一旦创建,就无法修改其中的元素。
  输出时,元组都要由圆括号标注,这样才能正确地解释嵌套元组。输入时,圆括号可有可无,不过经常是必须的(如果元组是更大的表达式的一部分)。不允许为元组中的单个元素赋值,当然,可以创建含列表等可变对象的元组。

1.1 创建元组

# 使用一对空圆括号创建一个空元组
empty_tuple = ()
print(empty_tuple) # 输出 ()

# 只有一个元素的元组可以通过在这个元素后面添加逗号来创建
single_tuple = 'single',
print(single_tuple) # 输出 ('single',)

# 通过逗号隔开的方式创建多个元素的元组
multiple_tuple = 1,True,3.14,'hello tuple'
print(multiple_tuple) # 输出 (1, True, 3.14, 'hello tuple')

# 通过一对圆括号进行创建
tuple_one = (1,2,'a',True)
print(tuple_one) # 输出 (1, 2, 'a', True)

# 通过tuple()函数进行创建,实际上是将列表转换成元组
tuple_two = tuple([True,'hello tuple2',3.14])
print(tuple_two) # 输出 (True, 'hello tuple2', 3.14)

在这里插入图片描述

2.2访问元组元素

  元组也是有序序列,所以访问元组中的元素可以通过索引(Indexing)来实现,索引从0开始。可以使用正整数索引访问元素,也可以使用负整数索引从末尾开始访问元素。
  需要注意的是,尝试访问不存在的索引会引发IndexError。确保索引在元组的有效范围内。

example_tuple = (1, 2, 'hello', 3.14,[3,5,7,9])
print(example_tuple[1]) # 输出 2
print(example_tuple[4]) # 输出 [3, 5, 7, 9]
print(example_tuple[-2]) # 输出 3.14
print(example_tuple[0:2]) # 输出 1 2
# print(example_tuple[6]) 该项操作会引发IndexError:IndexError: tuple index out of range
    
# 元组也适用于for循环遍历
for item in example_tuple:
    print(item)

在这里插入图片描述

2.3 元组的相关方法

  元组为不可变数据类型,相关的方法较少,主要是index() count(),以及内置函数len()

example_tuple = (1, 2, 'hello', 3.14, 'hello')

# index(x): 返回元素 x 在元组中第一次出现的索引。
print(example_tuple.index(3.14)) # 输出 3

# count(x): 统计元素 x 在元组中出现的次数。
print(example_tuple.count('hello')) # 输出2

# len(x): 获取元组的长度
print(len(example_tuple)) # 输出5

2.4 元组的拼接和重复

  通过+*进行拼接和重复

# 元组的拼接
tuple_1 = (2,4,6)
tuple_2 = ('a','b','hello')
join_tuples = tuple_1 +tuple_2
print(join_tuples) # 输出 (2, 4, 6, 'a', 'b', 'hello')

# 元组的重复
tuple_3 = ('hello','tuple')
repeat_tuples = tuple_3 * 3
print(repeat_tuples) # 输出 ('hello', 'tuple', 'hello', 'tuple', 'hello', 'tuple')

2.元组的打包和解包

  元组的打包(Packing)和解包(Unpacking)是两个常用的操作,它们允许你轻松地组合和分离多个变量。
  元组的打包:元组的打包是指将多个值组合成一个元组的过程。
  元组的解包:元组的解包是指将一个元组中的值解开,分配给多个变量。
  打包和解包的方式在函数返回多个值的时候特别有用。函数将多个值打包成元组返回,然后可以使用解包将这些值分配给不同的变量。
  需要注意的是,解包操作要求等号左边的变量数量必须与元组中的值数量相等。如果变量数量少于元组中的值数量,会触发 ValueError异常。

# 打包 packing 实际上就是元组默认创建的方式
# 在这里 True , 3.14 , hello被打包成一个元组
example_tuple = True,3.14,'hello'
print(example_tuple) # 输出 (True,3.14,'hello')

# 解包 unpacking
# 元组example_tuple的值被解包并分配给变量 a,b,和 c
a, b, c = example_tuple
print(a) # 输出 True
print(b) # 输出 3.14
print(c) # 输出 hello
# 触发 ValueError 异常
# 解包错误示例
example_tuple = 1, 2, 3
a, b = example_tuple  # ValueError: too many values to unpack (expected 2)
# 打包解包应用
# 函数返回多个值的例子
def get_coordinates():
    x = 10
    y = 20
    z = 30
    return x, y, z
# 解包函数返回的元组
x_coord, y_coord, z_coord = get_coordinates()
print(x_coord)  # 输出: 10
print(y_coord)  # 输出: 20
print(z_coord)  # 输出: 30

3.元组的应用场景

  Python 元组具有不可变性、安全性、高效性等优点,因此在很多场景下都有广泛的应用:
  1)多个返回值: 元组在函数返回多个值时特别方便,通过打包返回值,调用方可以使用解包轻松获取多个返回值。
  2)字典键值: 元组的不可变性使其成为字典的理想键值,特别是在需要使用多个值来唯一标识某个项的情况下。
  3)线程安全的多线程编程: 元组的不可变性使其在多线程环境中更安全,因为不会发生数据竞争问题。
  4)数据库操作: 在数据库操作中,元组通常用于存储一组参数,例如查询条件或更新值,因为元组的不可变性可以确保这些参数在整个操作中保持一致。
  5)非可变集合: 当需要将一组数据作为集合元素,但又不希望这些数据可变时,元组是一个很好的选择。它们可以作为集合的元素,同时保持不可变性。
  6)按需计算: 元组可以用于存储需要按需计算的值,只有在需要时才进行计算,避免了不必要的计算开销。
在这里插入图片描述

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

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

相关文章

Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

论文导读 | 图流的分割和摘要

前 言 本次论文导读介绍有关图流的分割和摘要问题的3篇文章。第1篇是partition的,第2篇是summarization的。 首先介绍第一篇文章。 文章一:图分割在分布式系统中有广泛的应用 文章的问题定义是用划分边的方式来分割图。如图所示,把图&#…

群晖Docker(Container Manager)中安装Home Assistant Container

群晖Docker(Container Manager)中安装Home Assistant Container 不要使用 套件里面的 Home Assistant,不利于后期拓展 方式一: docker run -d --name"home-assistant-1" -v /volume1/docker/homeassistant/config:/c…

互联网医院牌照|互联网医院牌照办理小知识

随着互联网技术的快速发展,互联网医院牌照已经成为医疗行业的一个重要资质,我们致力于为您提供最优质的服务,帮助您的公司或产品顺利获得此牌照。 一、产品特性描述 1、专业性:我们的团队由经验丰富的顾问组成,对互联…

Apipost IDEA插件如何使用

Apipost-Helper是由Apipost推出的IDEA插件,写完接口可以进行快速调试,且支持搜索接口、根据method跳转接口,还支持生成标准的API文档,注意:这些操作都可以在代码编辑器内独立完成,非常好用!这里…

leetcode每日一题复盘(11.13~11.19)

leetcode 435 无重叠区间 本题和射气球最小箭数大同小异,但是这一题没做出来,难就难在题目如何理解:移除区间最小数量,使剩下的区间不重叠 那么本质上就是求最少有多少个重叠区间,把重叠区间去掉剩下的区间即不重叠 这里有两种做…

完全免费!超好用的IDEA插件推荐:Apipost-Helper

Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款国产的…

学用 DevChat 的 VSCode 插件,体验AI智能编程工具 (一)

简单说DevChat是一个辅助编程的智能工具,它可以通过自然语言对话的方式与开发者进行交流,帮助开发者更高效地完成编程任务。 有了人工智能工具,编程进入一个新天地。 闻名已久,不若体验一下。 一.准备工作 1.运行环境. A. p…

在Gradio实现两个下拉框进行联动案例解读:change/click/input实践(三)

本文的代码来自ChuanhuChatGPT,通过拆解写得比较好的gradio项目,可以更快理解gradio的一些使用。 ChuanhuChatGPT整体页面效果是比较合理的: 1 下拉框联动效果的解读 本篇是将一个其中【对话】中的【Prompt加载】小模块抽取出来并稍稍修改…

TCP/IP卷一详解第二章Internet地址结构概要

在这一章中介绍了Internet中使用的网络层地址(也就是IP地址),还有如何为Internet中的设备分配地址,以及各种类型的地址等等…… 一、IP地址的表示 为大家所常见的有IPV4地址和IPV6地址,但在IPV4地址中,通…

JOSEF约瑟 电压继电器 DY-32/60C 板前接线 可订做导轨安装

DY-32/60C,DY-34/60C电磁式过电压继电器,用于继电保护线路中,作为过电压保护或低电压闭锁的动作元件。 系列型号 DY-32电压继电器; DY-36电压继电器; DY-33电压继电器; DY-37电压继电器; DY-34…

轻盈创新,气膜体育馆

气膜体育馆采用高强度、高柔性的薄膜材料为主要构建元素。其制作过程包括将膜材的外沿固定在地面基础或屋顶结构周边,并搭配智能化的机电设备,通过吹气实现室内空间的密闭。利用密闭空间内的气压支撑原理,当室内气压大于外部气压时&#xff0…

Minecraft开服教程:使用MCSM面板一键搭建我的世界服务器并实现远程联机

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 前言 MCSManager是一个…

期中成绩这样发

数字化时代,成绩查询系统已经成为学校里不可或缺的一部分。老师们需要一种方便、快捷、准确的方式来发布和查询成绩,而学生们则需要一种安全、可靠的方式来获取自己的成绩。那么,如何实现这一目标呢?我来给大家介绍几种简单实用的…

vue2【计算属性】

目录 1:计算属性的作用 2:代码示例 3:特点 4:好处 1:计算属性的作用 计算属性指的是通过将属性经过运算,最终得到一个属性值,这个属性值可以在method节点下和模板结构中被使用。 2&#x…

Jenkins 搭建

GitLab GitLab安装 https://gitlab.cn/install/?versionce CentOS 下安装 1. 安装和配置必须的依赖项 在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab&#xf…

Containerd接入Harbor仓库

在使用容器时,避免不了会使用到私有仓库,一般都是采用 harbor 作为私有仓库,docker 对接 harbor 仓库非常简单,哪 containerd 如何对接 harbor 呢? 在内网使用 harbor 根据个人习惯,一般都是非 http 并且是…

华东“启明”青少年音乐艺术实践中心揭幕暨中国“启明”巴洛克合奏团首演音乐会

2023年11月11日,华东“启明”青少年音乐艺术实践中心在上海揭幕,中国“启明”巴洛克合奏团开启了首场音乐会。 华东“启明”青少年音乐艺术实践中心由中共宁波市江北区委宣传部与上音管风琴艺术中心联合指导,宁波音乐港、宁波市江北区洛奇音乐…

未来之选:为什么向量数据库是您的数据管理利器

文章目录 前言什么是向量数据库?向量数据库的机制向量数据库的优点‍查询向量数据库 什么是向量Embedding?Amazon OpenSearch Service总结 前言 向量数据库擅长处理复杂的高维数据,正在彻底改变商业世界的数据检索和分析。它们执行相似性搜索…

ECharts:显示暂无数据

ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求,实现各种炫酷的统计图表效果。 如上图所示,有数据的时候固然好看,但是当它没有数据的时候,就是光秃秃的一片,所…