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')
相关推荐
JustHappy3 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
老毛肚3 小时前
jeecg-boot-base-core 02 day
javascript·python
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
Hommy883 小时前
【剪映小助手】添加图片接口(Add Images)
后端·github·剪映小助手·视频剪辑自动化
GetcharZp4 小时前
别再盲目用 OpenCV 读图了,这才是 CV 预处理的终极杀手锏!
后端
岁月宁静4 小时前
RAG 文档摄入全链路,从原理到生产落地
vue.js·人工智能·python
JaydenAI4 小时前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
神奇元创5 小时前
商用级光路加速卡:大模型推理的极速落地方案
python·神经网络·fpga开发·dsp开发
运筹vivo@5 小时前
Python ContextVar 底层机制与内存模型拆解
前端·数据库·python