Python元组详解

    在上一篇笔记中介绍了列表。

    公众号端:

列表icon-default.png?t=O83Ahttps://mp.weixin.qq.com/s?__biz=MzkwMjc0MTE3Mw==&mid=2247483924&idx=1&sn=f8b36af8953e8fa9c26ebbf6081edd48&chksm=c0a1afcef7d626d8bd7feedae04c8717d90f9a94266a4e6c10068d6cfaebc73ca988b39147cf#rd    CSDN端:

列表icon-default.png?t=O83Ahttps://blog.csdn.net/m0_61009360/article/details/141606941    而篇笔记将介绍与列表很像但又不同的数据类型:元组。接下来本文将详细讲解Python元组的概念和特性,以及常见的操作方法。

    欢迎各位关注我的公众号【多棱领域】,为各位分享有趣的知识,共同学习!

一.什么是元组?

    元组(Tuple)是 Python 中的一种数据结构,可用于存储多个值的有序集合。与列表类似(List),元组中的元素可以是任意类型的数据,但与列表不同的是,元组是不可变的。一旦创建了元组,就不能修改其内容。这种不可变性使得元组在某些场景下比列表更具优势,比如在需要保证数据完整性的情况下使用元组更具安全性。

二.创建元组

    在 Python 中,元组使用圆括号 () 创建。可以在括号内用逗号分隔多个元素来创建一个元组。

1.空元组

empty_tuple = ()

2.单个元素的元组

    创建一个包含单个元素的元组时,需要在元素后面加一个逗号,否则 Python会将其识别为普通的变量。

value = (42)
single_element_tuple = (42,)
print(type(value))
print(type(single_element_tuple))

    输出:

<class 'int'>

<class 'tuple'>

    可见,如果单个元素后未加逗号,会视为变量,上述例子为整数类型。

3.包含多个元素的元组

multi_element_tuple = (1, 2, 3, "Python", True)

    上述元组中包含不同数据类型。

4.不使用括号的元组

    Python 允许省略括号直接创建元组,只需用逗号分隔元素即可。这称为“序列解包”或“隐式元组”。

implicit_tuple = 1, 2, 3
print(type(implicit_tuple))

    输出:

<class 'tuple'>

. 操作方法

    由于元组是不可变的,因此它不支持像列表那样的修改操作(如 append、remove 等)。如果对元组中的元素进行修改,则会报错:

test_tuple = (10, 20, 30, 40)
test_tuple[0] = 100

    报错:

TypeError                         Traceback (most recent call last)

Cell In[9], line 2

1 test_tuple = (10, 20, 30, 40)

----> 2 test_tuple[0] = 100

TypeError: 'tuple' object does not support item assignment

    但是,元组仍然可以进行一些常见的操作。

1.访问元素

    使用索引来访问元组中的元素,与列表的操作类似。索引从 0 开始,也可以通过负数索引从末尾开始访问元素。

my_tuple = (1, 2, 'hello', (3, 4))
print(my_tuple[0]) #输出:1
print(my_tuple[-1]) #输出:(3, 4)

2.切片

    可以使用切片操作符 : 访问元组中的一部分。

my_tuple = (10, 20, 30, 40)
print(my_tuple[1:3]) #输出 (20, 30)

3.连接

    可以使用“+”运算符将两个或多个元组连接起来生成一个新的元组。

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result_tuple = tuple1 + tuple2
print(result_tuple) # 输出 (1, 2, 3, 4, 5, 6)

4.重复

    可以使用“*”运算符重复元组中的元素生成一个新的元组。

my_tuple = (1, 2, 3)
repeated_tuple = my_tuple * 3
print(repeated_tuple)# 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)

5.成员检查

    使用"in"关键字检查某个元素是否存在于元组中。

my_tuple = (1, 2, 3, 4)
print(3 in my_tuple) #输出 True

6.解包(Unpacking)

    元组的解包允许将元组中的元素直接赋值给多个变量。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a) # 输出 1
print(b) # 输出 2
print(c) # 输出 3

7.内置函数

    Python 提供了一些内置函数用于操作元组,如 len()、max()、min()、sum() 等。

my_tuple = (1, 2, 3, 4, 5)
print(len(my_tuple)) #输出 5
print(max(my_tuple)) #输出 5
print(min(my_tuple)) #输出 1
print(sum(my_tuple)) #输出 15

    还有count() 方法可以用来统计某个元素在元组中出现的次数,index() 方法可以返回某个元素在元组中首次出现的索引。

my_tuple = (1, 2, 2, 3, 4, 2)
print(my_tuple.count(2))# 输出:3
print(my_tuple.index(3))# 输出:3

四. 应用场景

    元组在 Python 中具有广泛的应用,特别是在以下场景中:

1.不变数据的存储

    当有一组数据需要保证不被修改时,可以使用元组。例如,数据库查询的结果通常是以元组的形式返回的,因为这些结果通常不需要修改。

2.作为字典的键

    元组可以作为字典的键,而列表不可以。因为元组是不可变的,因此可以保证键的稳定性。

my_dict = {(1, 2): "value1", (3, 4): "value2"}
print(my_dict[(1, 2)])# 输出 "value1"

3.函数返回多个值

    函数可以通过返回元组来一次返回多个值。

def get_min_max(numbers):return min(numbers), max(numbers)min_val, max_val = get_min_max([1, 2, 3, 4, 5])
print(min_val) # 输出 1
print(max_val) # 输出 5

4.结构化数据

    元组常用于表示结构化的数据,例如坐标 (x, y)、数据库记录等。

五.元组的优缺点

  • 优点

    • 不可变性:确保数据的完整性,避免意外修改。

    • 性能:由于元组不可变,它的操作通常比列表更快。

    • 作为键:可以作为字典的键,这是列表无法做到的。

  • 缺点:

    • 不可变性:无法修改元组中的元素,灵活性较差。

    • 方法有限:元组的方法较少,操作不如列表丰富。

    元组是 Python 中的一种重要数据结构,具有不可变性和高效性,适用于存储不需要修改的数据。通过了解元组的概念、创建方式、操作方法以及应用场景,有助于在编写 Python 程序时更加高效地处理数据。

    如果本文对您有所帮助,欢迎关注、点赞、转发,共同学习!

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

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

相关文章

MySQL用户管理(DCL)

先看一下我原本的mysql当中的user里面的数据库 基本语法 1.查询用户 use mysql; select * from user; 2.创建用户 create user 用户名主机名 identified by 密码;例1&#xff1a;创建用户 itcast&#xff0c; 只能够在当前主机localhost访问&#xff0c; 密码123456; cr…

鸿蒙开发之ArkUI 界面篇 七 综合案例

一个登录界面&#xff0c;如图&#xff1a; 首先分析&#xff0c;垂直方向出现了5排&#xff0c;分别是顶部的图片组件&#xff0c;两个输入框&#xff0c;一个登录按钮&#xff0c;一排“前往注册“和”忘记密码“组件&#xff0c;他们水平对齐&#xff0c;用row容器&#xff…

中秋期间互联网产品故障事件(晋江、115盘、阿里云盘)盘点

24年中秋期间&#xff0c;除了肆掠的“贝碧嘉”台风外&#xff0c;互联网故障bug事件也不少&#xff0c;趁着有空盘点下&#xff0c;可作为员工信息安全培训案例。 一&#xff1a;晋江文学城访问异常&#xff08;基础环境故障类&#xff09; 9月14日&#xff0c;“晋江崩了”冲…

Python面试宝典第49题:字符串压缩

题目 给你一个字符数组chars &#xff0c;请使用下述算法进行压缩。 1、从一个空字符串s开始&#xff0c;对于chars中的每组连续重复字符 &#xff1a; &#xff08;1&#xff09;如果这一组长度为1 &#xff0c;则将字符追加到s中。 &#xff08;2&#xff09;否则&#xff0c…

【RabbitMQ】RabbitMQ 概述

RabbitMQ 概述 前⾔什么是MQMQ的作⽤为什么选择RabbitMQ1. Kafka2. RocketMQ3. RabbitMQ 前⾔ Rabbit 也是⼀个公司名. MQ ( message queue ) 消息队列 的意思 , RabbitMQ 是 Rabbit 企业下的⼀个消息队列产品. RabbitMQ 是⼀个实现了 AMQP 的 消息队列 服务,是当前主流的消息…

若依Nodejs后台、实现90%以上接口,附体验地址、源码、拓展特色功能

背景 前端的宝子们代码写累了吗&#xff1f;那就一起研究下后端吧&#xff01; 体验地址&#xff1a;http://106.54.233.63:5000 Gitee源码&#xff1a;https://gitee.com/ruirui-study/ruoyi_nodejs_open 本项目的前端基于若依Vue3.0版本&#xff0c;后端是基于MidwayJs框…

Ivanti Endpoint Manager反序列化远程代码执行漏洞(CVE-2024-29847)

一、漏洞情况分析 IvantiEndpointManager&#xff08;EPM&#xff09;是由Ivanti公司开发的一款综合性端点管理解决方案&#xff0c; 它帮助企业有效管理和保护网络中的端点设备&#xff0c;包括桌面、笔记本电脑、服务器、移动设备 和虚拟环境等。 IvantiEndpointManager反序…

十大排序之:冒泡排序

目录 一、简介 实现过程 时间复杂度 二、代码实现 函数声明 Swap函数 单趟 多趟 测试 优化 一、简介 冒泡排序是一种简单的排序算法&#xff0c;它重复地比较相邻的两个元素&#xff0c;如果顺序错误就交换它们&#xff0c;直到没有元素需要交换为止。这个过程类…

风力发电叶片缺陷检测数据集

风力发电叶片缺陷检测数据集】nc: 4 names: [Burn Mark, Coating_defects, Crack, EROSION ] 名称&#xff1a;【烧伤痕迹, 涂层缺陷, 裂缝&#xff0c;侵蚀】共1095张&#xff0c;8:1:1比例划分&#xff0c;&#xff08;train;876张&#xff0c;val&#xff1a;109张&#xff…

AG32 MCU采集的数据如何通过内部AHB总线传输到FPGA逻辑

AG32 因为管脚可以灵活定义&#xff0c;可以硬件兼容STM32F407等器件&#xff0c;深受客户的喜爱和欢迎。并且AG32内置FPGA逻辑&#xff0c;可以帮助客户实现高速的数据处理&#xff0c;这是其他普通MCU无法比拟的。客户刚上手开发&#xff0c;沟通了一些技术上的疑问&#xff…

设计模式 组合模式(Composite Pattern)

组合模式简绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端可以用一致的方式处理单个对象和组合对象。这样&#xff0c;可以在不知道对象具体类型的条…

【Python百日进阶-Web开发-FastAPI】Day801 - FastAPI是什么

文章目录 一、官网二、FastAPI是什么三、FastAPI特性3.1 基于开放标准3.2 自动生成文档3.3 更主流的 Python3.4 编辑器支持3.5 简洁3.6 验证3.7 安全性及身份验证3.8 依赖注入3.9 无限制"插件"3.10 测试四、Starlette 特性五、Pydantic 特性六、Python 类型提示简介6…

数据结构—队列

队列 概念 只允许在一端进行插入数据的操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)。 入队列&#xff1a;进行插入操作的一端称为队尾。 出队列&#xff1a;进行删除操作的一端称为队头。 结构 队列也可以数组…

【前端】prop传值的用法

prop配置项的作用是让组件接收外部传过来的值。 组件标签上传值给vue组件对象 <script> export default {name: HelloWorld,data(){return{ }},props:[name,age] #简单接收 } </script>方式2:利用对象方式设置数据类型进行类型限制 props:{name:String…

《探索云原生与相关技术》

在当今的科技领域中&#xff0c;云原生&#xff08;Cloud Native&#xff09;已经成为了一个热门的话题。它代表着一种构建和运行应用程序的全新方式。 云原生的概念 云原生是一套技术体系和方法论&#xff0c;旨在充分利用云计算的优势来构建更具弹性、可扩展性和高效性的应…

开源 AI 智能名片与微信拓客小程序:基于人性洞察的内容营销新策略

摘要&#xff1a;本文分析了刷屏社交事件所呈现出的特征以及背后反映出的碎片时代人们的行为特点。通过引入网络人格三角形模型&#xff0c;探讨了人性特征在内容营销中的应用。结合开源 AI 智能名片与微信拓客小程序&#xff0c;提出了利用人性特点进行内容设计和传播规划的策…

2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】

目录 数据结构王道第2章之顺序表 顺序表的定义和基本操作 定义&#xff1a; 基本操作&#xff1a; 基本操作&#xff1a; ​编辑 顺序表的实现-静态分配​编辑 顺序表的静态分配初始化 如果“数组”存满了怎么办&#xff1a; 顺序表的实现-动态分配&#xff1a; ​编辑 顺序表…

java日志框架之JUL(Logging)

文章目录 一、JUL简介1、JUL组件介绍 二、Logger快速入门三、Logger日志级别1、日志级别2、默认级别info3、原理分析4、自定义日志级别5、日志持久化&#xff08;保存到磁盘&#xff09; 三、Logger父子关系四、Logger配置文件 一、JUL简介 JUL全程Java Util Logging&#xff…

【复刻】数字化转型是否促进了企业内共同富裕? —来自中国 A 股 (2002-2022年)

【顶刊复刻】数字化转型是否促进了企业内共同富裕?———来自中国 A 股上市公司的证据&#xff08;2002-2022&#xff09; 一、数据简介 本数据参考方明月等&#xff08;2023&#xff09;的研究方法&#xff0c;对原文数据进行了年份扩充&#xff0c;更新到了2003-2022年。并…

【例题】lanqiao4425 咖啡馆订单系统

样例输入 3 2 2 1 3 1 2样例输出 3 2样例说明 输入的数组为&#xff1a;【3&#xff0c;1&#xff0c;2】 增量序列为&#xff1a;【2&#xff0c;1】 当增量 h2&#xff1a;对于每一个索引 i&#xff0c;我们会将数组元素 arr[i] 与 arr[i−h] 进行比较&#xff0c;并进行可…