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')
相关推荐
java1234_小锋5 分钟前
分享一套优质的基于Python的房屋数据分析预测系统(scikit-learn机器学习+Flask)
python·数据分析·scikit-learn
CCPC不拿奖不改名9 分钟前
RAG基础:基于LangChain 的文本分割实战+文本分块
人工智能·python·langchain·知识库·改行学it·rag·向量库
青春不朽51225 分钟前
TensorFlow 入门指南
人工智能·python·tensorflow
bioinfomatic30 分钟前
对比学习基本原理——以DrugClip为例,从CLIP到DrugClip
人工智能·python
-To be number.wan40 分钟前
Python数据分析:英国电商销售数据实战
开发语言·python·数据分析
细节处有神明43 分钟前
开源数据之历史气象数据的获取与使用
人工智能·python·算法
小白开始进步1 小时前
JAKA Zu12 机械臂运动学算法深度解析(含可视化方案)
python·算法·numpy
2301_764441331 小时前
基于Genos模型的基因序列分析应用
人工智能·python
代码匠心1 小时前
从零开始学Flink:状态管理与容错机制
java·大数据·后端·flink·大数据处理