课时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都可以进行解包。

 

相关文章
|
对象存储
如何设置对象存储OSS跨域(CORS)?
CORS的中文名是跨域资源共享,是HTML5提供的标准跨域解决方案。跨域访问,也叫JavaScript跨域访问问题,是浏览器出于安全考虑而设置的一个限制,即同源策略。当来自于A网站的页面中的JavaScript代码希望访问B网站的时候,浏览器会拒绝该访问,因为A、B两个网站是属于不同的域。
9469 0
|
6月前
|
机器学习/深度学习 传感器 算法
基于多模态感知与深度学习的智能决策体系
本系统采用“端-边-云”协同架构,涵盖感知层、计算层和决策层。感知层包括视觉感知单元(800万像素摄像头、UWB定位)和环境传感单元(毫米波雷达、TOF传感器)。边缘侧使用NVIDIA Jetson AGX Orin模组处理多路视频流,云端基于微服务架构实现智能调度与预测。核心算法涵盖人员行为分析、环境质量评估及路径优化,采用DeepSORT改进版、HRNet-W48等技术,实现高精度识别与优化。关键技术突破包括跨摄像头协同跟踪、小样本迁移学习及实时推理优化。实测数据显示,在18万㎡商业体中,垃圾溢流检出率达98.7%,日均处理数据量达4.2TB,显著提升效能并降低运营成本。
344 7
|
9月前
|
并行计算 PyTorch 算法框架/工具
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
5038 13
|
传感器 数据采集 存储
基于51单片机的大棚环境检测系统设计
基于51单片机的大棚环境检测系统设计
862 0
|
NoSQL Linux Shell
Redis 的安装与部署(图文)
Redis 的安装与部署(图文)
|
存储 Java
使用System.setProperty设置系统属性
使用System.setProperty设置系统属性
|
Windows Python
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
240 0
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
|
机器学习/深度学习 人工智能 算法
深入解析机器学习中的支持向量机(SVM)
深入解析机器学习中的支持向量机(SVM)
865 0