Python 教程 - 元组

Python 有两类序列结构,分别是元组(tuple)和列表(list)。这两种序列都可以存储任意类型的对象,形成有序的序列结构。本文将介绍元组如何使用。

元组与列表的区别

元组和列表非常相似,都是用来存储数据的容器,但它们有以下几点不同:

  • 元组一旦创建,内容就不能修改。

  • 元组使用圆括号,列表使用方括号。

  • 如果元组中只有一个元素,后面必须加上逗号(多个元素则不需要)。

使用元组的好处

尽管元组在使用上有一些限制,但它也有一些优点:

  • 读取速度比列表快。

  • 占用的空间比列表少。

  • 数据更安全(因为无法修改)。

创建元组

创建元组有两种方法:「使用圆括号和逗号」和「使用tuple()函数」。

使用圆括号和逗号

通过圆括号包裹内容,并用逗号分隔,就可以创建一个基本的元组。下面的例子中,可以看到 a 和 b的类型都是元组(注意,因为 b 只有一个元素,所以元素后面要加上逗号)。

ini 复制代码
a = ('apple','banana','orange','grap')
b = ('apple',)
type(a)  # tuple
type(b)  # tuple

使用 tuple() 函数

使用 tuple(列表) 可以将列表转换成元组。

css 复制代码
a = ['apple','banana','orange','grap']
b = tuple(a)
type(b)  # tuple

读取元组的内容

读取元组内容有两种方法:「使用变量」、「索引下标」。

使用变量

元组可以同时赋予多个变量内容,通过这种方法可以将元素分别赋给不同的变量,然后通过读取变量就能获取对应的内容(注意,使用这种方法时,变量的数量要等于元组的内容数量)。

bash 复制代码
t = ('apple','banana','orange','grap')
a, b, c, d = t
print(a)   # apple
print(b)   # banana
print(c)   # orange
print(d)   # grap

索引下标

在元组中,每个元素都有自己的索引值,通过指定索引值就能读取相应索引位置的数据。

ini 复制代码
t = ('apple','banana','orange','grap')
print(t[0])   # apple
print(t[1])   # banana
print(t[2])   # orange
print(t[3])   # grap

元组的操作

使用 + 号合并元组

类似于字符串的拼接方式,使用 + 号可以将不同的元组合并。

ini 复制代码
t1 = ('apple','banana','orange')
t2 = ('grap','pineapple')
t = t1 + t2
print(t)   # ('apple', 'banana', 'orange', 'grap', 'pineapple')

使用 * 号重复元素

使用 * 号可以重复元组中的所有元素,生成一个新的元组。

less 复制代码
a = ('apple','banana','orange')
b = a*3
print(b)   # ('apple', 'banana', 'orange', 'apple', 'banana', 'orange', 'apple', 'banana', 'orange')

强制修改元组

通过转成列表的方式修改元组数据,修改数据后,再转换为新的元组(注意,虽然变量名相同,但两个元组是完全不同的)。

less 复制代码
a = ('apple','banana','orange')
b = list(a)
b.append('grap')
a = tuple(b)
print(a)   # ('apple', 'banana', 'orange', 'grap')
相关推荐
LaughingDangZi13 分钟前
vue+java分离项目实现微信公众号开发全流程梳理
java·前端·后端
9527(●—●)14 分钟前
windows系统python开发pip命令使用(菜鸟学习)
开发语言·windows·python·学习·pip
神奇小汤圆16 分钟前
RabbitMQ发布订阅模式同一消费者多个实例如何防止重复消费?
后端
leeggco22 分钟前
Batfish Dashboard 项目说明文档
后端
森叶32 分钟前
手搓一个 Windows 注册表清理器:从开发到 EXE 打包全流程
windows·python
qq_12498707531 小时前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计
骚戴1 小时前
大语言模型(LLM)进阶:从闭源大模型 API 到开源大模型本地部署,四种接入路径全解析
java·人工智能·python·语言模型·自然语言处理·llm·开源大模型
柒壹漆1 小时前
用Python制作一个USB Hid设备数据收发测试工具
开发语言·git·python
盒马盒马1 小时前
Rust:内部可变性 & 型变
开发语言·后端·rust