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')
相关推荐
飞翔的佩奇2 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance2 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
搏博3 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
lxmyzzs4 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
bobz9654 小时前
小语言模型是真正的未来
后端
萧鼎4 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
DevYK5 小时前
企业级 Agent 开发实战(一) LangGraph 快速入门
后端·llm·agent
yujkss5 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910135 小时前
小程序开发APP
开发语言·人工智能·python·yolo
一只叫煤球的猫6 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试