课时12:元组

简介: 元组(Tuple)是Python中的一种不可变序列,与列表类似但元素不可修改。主要特点包括:使用小括号表示,支持索引和切片操作,但不支持插入、删除等修改操作。创建元组可以通过直接使用小括号或省略括号但需保留逗号。元组支持解包操作,可以方便地将多个值赋给多个变量,甚至利用星号处理多余元素。相比列表,元组更适用于数据不需要更改的场景,如常量集合。此外,元组与其他序列类型(如列表、字符串)在操作上有相似之处,均可进行遍历、索引和切片等操作。

元组

 

摘要

01.元组的概念与特点

02.元组的创建与表示

03.元组的操作与特性

04.元组与其他序列的关系

 

01.元组的概念与特点

1.1元组的定义

元组(TUPLE)是一种不可变序列。与列表的操作方式基本一致,所以在操作元组时,把元组当成是一个不可变的列表可以了,但在某些方面存在差异。


1.2元组与列表的区别

元组中不能使用会修改对象的方法,例如索引赋值、切片赋值、 Delete 操作以及  Insert 、 Append  等方法。而索引、成员判断(in、not in)等操作在元组中均可使用。一般希望数据不改变时,就使用元组,其余情况都使用列表。


02.元组的创建与表示

2.1创建空元组

创建空元组使用小括号,即()。例如,执行 My_tuple  = (),再通过 Type(my_tuple) 查看其类型,结果为 Class tuple ,表示创建成功。

代码:

my_tuple=()
print(my_tuple)

执行结果显示括号

image.png

代码2:

my tuple=() //创建了一个空元素
print(my_tuple,type(my_tuple))

执行结果

image.png

 

2.2创建有元素的元组

创建包含元素的元组同样使用小括号,元素之间用逗号分隔。例如, My_tuple  = (1, 2, 3, 4, 5),创建了一个包含五个元素的元组。打印该元组,结果为(1, 2, 3, 4, 5)。

代码:

my tuple=()
my_tuple=(1,2,3,4,5)
print(my_tuple)

执行结果 

image.png

但是注意不能这么写my_tuple[3]=10

执行:报错,元组是不可变对象,不能尝试为元组中的元素重新赋值。

image.png

 

2.3省略括号的情况

当元组非空时,括号可以省略。例如, My_tuple  = 10, 20, 30, 40,这也是一个合法的元组定义方式。一般情况下都可以不写括号,写括号的好处是代码结果清楚一点,不写也是一个元组。

代码:

my_tuple =10,20,30,40
print(my_tuple ,type(my_tuple))

执行结果

image.png

但需要注意的是,如果元组不是空元组,它里边至少要有一个逗号,对于只有一个元素的元组,即使元素后有逗号,若不使用小括号,Python也无法识别其为元组。例如,40(无括号)表示整数,而(40)(有括号且元素后有逗号)才表示元组。

my_tuple =10,20,30,40
my_tuple =40,
print(my_tuple ,type(my_tuple))

执行结果

image.png

 

03.元组的操作与特性

3.1索引操作

可以通过索引获取元组中的元素。例如,对于元组 My_tuple  = (1, 2, 3, 4, 5),使用 My_tuple [3]可以取出元素4。但需要注意的是,不能对元组进行索引赋值,否则会报错,提示 Tuple object does not support item assignment ,因为元组是不可变对象。

代码:

my_tuple=(1,2,3,4,5)
 print(my_tuple[3])

执行结果

image.png


3.2切片操作

元组的切片操作与列表类似。例如, My_tuple [1:3]可以获取元组中索引从1到2(不包括3)的元素。


3.3解包操作

1基本解包:将元组中的每个元素分别赋值给一个变量,称为解包或解构。例如,a, b, c, d =  My_tuple ,其中 My_tuple 包含四个元素,执行后a、b、c、d分别被赋值为元组中的对应元素。

代码:

my_tuple=10,20,30 ,40
a,b,c,d=my_tuple
print("a =”,a)
print(“b =”b)
print(“c =”c)
print(“d=”d)

执行结果

image.png

2交换变量值:利用元组的解包可以方便地交换两个变量的值。例如,a, b = b, a,无需借助中间变量即可实现变量值的交换。实际上是把a赋值给b,b赋值给a

代码2:

a=100
b=300
a,b=b,a
print(a,b)

执行结果:

image.png

这时候就发现a变成300,b变成100,在这里可以利用解包的特点交换两个变量的值,这是一个比较典型的用法。 

3变量数量与元素数量不一致的情况:

变量数量少于元素数量:可以在变量前添加星号(),表示该变量将获取所有剩余元素,最后返回的是列表形式。

代码:

my_tuple=10,20,30,40
a , b=my_tuple //发现里面是4个值,但只给了两个变量
print(a , b)

执行结果:报错

image.png

代码2:假如一百个值,只想要前十个,可以在变量前添加星号*,表示该变量将获取所有剩余元素

my_tuple=10,20,30,40
a,b,*c=my_tuple
print(a .b)
print('c =‘.c)

执行结果注意在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致

image.png

例如,a, b, c =    My_tuple ,其中 My_tuple 有四个元素,执行后a被赋值为第一个元素,b被赋值为第二个元素,c为一个包含剩余元素的列表。

星号位置可调整:星号可以放在不同位置,但只能有一个星号变量。例如,a, b, c =  My_tuple 也是合法的,此时a被赋值为第一个元素,c被赋值为最后一个元素,中间的元素存储在列表b中。

my_tuple=10,20,30,40
a, *b, c=my_tuple
print('a =".a)
print('b =".b)
print('c =".c)

执行结果

image.png

*a, b, c=my_tuple
print('a =".a)
print('b =".b)
print('c =".c)

执行结果

image.png

错误情况:不能同时出现两个及以上*变量,否则会报语法错误。

image.png

04.元组与其他序列的关系

 

元组的操作方式与列表基本相同,包括遍历、索引、切片等。而且解包操作并非元组独有,对于其他序列(如列表、字符串等)也可以进行解包操作。但是元组不是用得这么多,主要还是以列表为主。例如,对于列表a,b,*c=[1,2,3,4,5,6,7]或字符串a,b,*c='hello world都可以进行解包。

 

相关文章
|
存储 安全 Linux
探索eBPF:Linux内核的黑科技(上)
探索eBPF:Linux内核的黑科技
|
数据库
ACN规则深度解密-全网最细的剖析
ACN规则深度解密-全网最细的剖析
|
23天前
|
人工智能 JSON 自然语言处理
如何使用千问生成你的第一部AI短剧:基于千问大模型的全流程实践与变现路径拆解
本文详解AI短剧工业化落地路径:以通义千问为核心,拆解从剧本生成、视觉制作到后期合成的低成本SOP,单部5分钟短剧成本仅约50元;涵盖平台分账、品牌定制、私域服务等多元变现模式,并附实战提示词模板与合规避坑指南,助力零基础创作者快速入局变现。
就是要你懂负载均衡--lvs和转发模式
> 本文希望阐述清楚LVS的各种转发模式,以及他们的工作流程和优缺点,同时从网络包的流转原理上解释清楚优缺点的来由,并结合阿里云的slb来说明优缺点。 如果对网络包是怎么流转的不太清楚,推荐先看这篇基础:[程序员的网络知识 -- 一个网络包的旅程](https://www.atatech.org/articles/80573) ,对后面理解LVS的各个转发模式非常有帮助。
14406 0
|
3月前
|
人工智能 缓存 自然语言处理
阿里云百炼Token Plan(团队版)收费价格、支持的模型及各模型适用场景详解
阿里云百炼Token Plan团队版是面向企业和开发者的AI大模型订阅服务,以Credits统一计量,提供标准(198/月)、高级(698/月)、尊享(1398/月)三档套餐及共享用量包,按月订阅、预算可控。服务支持千问、万相、DeepSeek、Kimi、GLM、MiniMax等百余款主流模型灵活切换,覆盖文本、图像、视频生成等全场景能力,兼容OpenClaw、Qwen Code、Claude Code等主流AI编程与智能体工具。
|
4月前
|
人工智能 数据可视化 vr&ar
从 Tripo 3D 看 AI 生成 3D 资产的下一步:H3.1、P1 与创作工作流
过去一年,很多人对 AI 图像和 AI 视频已经比较熟悉,但 AI 生成 3D 资产的变化其实也很快。
590 1
|
Linux iOS开发 MacOS
硬盘分区怎么做?这几款分区工具新手也能轻松上手
本文介绍了五款实用的硬盘分区工具,满足不同用户需求。Windows用户可使用内置的磁盘管理器或DiskPart命令行工具,简单易上手;DiskGenius功能全面,适合进阶用户进行复杂操作和数据恢复;Mac用户可借助Disk Utility完成基本磁盘管理任务;Linux用户及高级玩家可选择开源工具GParted,支持多种文件系统并具备高度自由度。根据自身需求和技术水平选择合适的工具,可高效完成硬盘分区与管理。
|
人工智能
AI大咖说-如何评价论文的创新性
《AI大咖说》探讨论文创新性,强调新意、有效性和领域研究问题的重要性。创新点在于用新颖方法有效解决研究问题。评价公式:价值=问题大小*有效性*新意度。该观点源于《跟李沐学AI》视频,提供1-100分评分标准,助力评估论文价值。5月更文挑战第14天
753 3
|
Java Linux 开发工具
OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用
OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用
OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用
|
自然语言处理 算法 物联网
如何训练一个大模型:LoRA篇
如何训练一个大模型:LoRA篇
3825 1