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

news2024/9/20 1:06:14

在这里插入图片描述

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)按需计算: 元组可以用于存储需要按需计算的值,只有在需要时才进行计算,避免了不必要的计算开销。
在这里插入图片描述

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

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

相关文章

[IJKPLAYER]基于DEMO分析IJKPLAYER(整理版本)

背景 博主主要是从事C语言开发,因此本文着重强调FFMPEG部分,关于JAVA应用和框架层只是一笔带过。IJKPLAYER的实质是对FFMPEG项目中的ffplayer程序进行的二次封装,通过JNI方式完成对外提供JAVA接口。 1.目录结构 activities:包含了demo的所有…

react函数式组件props形式父向子传参

父组件中定义 子组件中触发回调传值 import { useState } from "react"; function Son(params) {const [count, setCount] useState(0);function handleClick() {console.log(params, paramsparamsparamsparamsparamsparams);params.onClick(111)setCount(count 1…

多个微信快速同步发圈

做营销最重要的任务是什么? 毋庸置疑,就是发布朋友圈。 为什么要发圈呢? 现在社交媒体中,微信不管在生活上、工作上都是不可或缺的工具,而朋友圈是微信中社交场景之一,也是很多企业作为推广产品和服务的重…

腾讯云服务器多少钱一年?2023年腾讯云优惠云服务器推荐

作为一名程序员,技术的突飞猛进是从拥有第一台云服务器开始的。那时,我开始尝试使用Linux系统,并成功上线了自己的第一个小程序。自此之后,我和我的同事们都开始拥有自己的云服务器,用来搭建各种小项目或者好玩的东西。…

OpenAtom OpenHarmony三方库创建发布及安全隐私检测

OpenAtom OpenHarmony三方库(以下简称“三方库”或“包”),是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者快速开发OpenHarmony应用。三方库根据其开发语言分为2种,一种是使用JavaScript和TypeScr…

wpf devexpress设置行和编辑器

如下教程示范如何计算行布局,特定的表格单元编辑器,和格式化显示值。这个教程基于前一个文章 选择行显示 GridControl为所有字段生成行和绑定数据源,如果AutoGenerateColumns 属性选择AddNew。添加行到GridControl精确显示为特别的几行设置。…

Containerd接入Harbor仓库

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

【SpringBoot3+Vue3】一【基础篇】

目录 一、Spring Boot概述 1、Spring Boot 特性 1.1 起步依赖 1.2 自动配置 1.3 其他特性 1.3.1 内嵌的Tomcat、Jetty (无需部署WAR文件) 1.3.2 外部化配置 1.3.3 不需要XML配置(properties/yml) 二、Spring Boot入门 1、一个入门程序需求 2、步骤 2.1 创建Maven工…

智能配方颗粒管理系统解决方案,专业实现中医药产业数字化-亿发

“中药配方颗粒”,又被称为免煎中药,源自传统中药饮片,经过提取、分离、浓缩、干燥、制粒、包装等工艺加工而成。这种新型配方药物完整保留了原中药饮片的所有特性。既能满足医师的辨证论治和随症加减需求,同时具备强劲好人高效的…

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

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

(论文阅读29/100 人体姿态估计)

29.文献阅读笔记 简介 题目 DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation 作者 Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, and Bernt Schiele, CVPR, 2016. 原文链接 h…

分享一套适合二开的JAVA开源版本MES系统

一、系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码 万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理,计划管理,物料控制,生产执行…

ubuntu开机系统出错且无法恢复。请联系系统管理员。

背景: ubuntu22.04.2命令行,执行自动安装系统推荐显卡驱动命令,字体变大,重启后出现如下图错误,无法进入系统,无法通过CTRLALTF1-F3进入TTY模式。 解决办法: 1.首先要想办法进入系统&#xff…

江门車馬炮汽车金融中心 11月11日开张

江门车马炮汽车金融中心于11月11日正式开张,这是江门市汽车金融服务平台,旨在为广大车主提供更加便捷、高效的汽车金融服务。 江门市作为广东省的一个经济发达城市,汽车保有量持续增长,但车主在购车、用车、养车等方面仍存在诸多不…

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

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

Apipost IDEA插件如何使用

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

Python数据大杀器:掌握collections与heapq,编写更高效的算法与数据处理

前言 在计算机科学的世界中,数据结构是构建强大和高效算法的基石。Python作为一门广泛应用的编程语言,以其丰富的数据结构模块为程序员提供了强大的工具。本文旨在深入研究Python的collections和heapq模块,通过更丰富的示例和详细的解释&…

威海广泰-002111 三季报分析(20231109)

威海广泰-002111 基本情况 公司名称:威海广泰空港设备股份有限公司 A股简称:威海广泰 成立日期:2002-08-30 上市日期:2007-01-26 所属行业:专用设备制造业 周期性:0 主营业务:航空产业、消防产业…

数字互动新纪元 | 拓世法宝商务数字人一体机,带给你智能展会导览体验

人工智能技术的飞速发展之下,各行各业都在迎来颠覆性的变革。大型展会,犹如庞大的迷宫,错综复杂的展区,让参展商和观众往往难以找到理想的商机。展会组织者更是面临着庞大面积的管理任务,如何在这个错综复杂的空间中提…