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')
相关推荐
肌肉娃子几秒前
一次 Doris FE CPU 飙高的排障实录:从怀疑 fe.conf 到定位 MyBatis 超长批量 UPSERT
后端
腥辣甜咸1 分钟前
队列?不妨试试pgmq
后端
小江的记录本1 分钟前
【大语言模型】大语言模型——核心概念(预训练、SFT监督微调、RLHF/RLAIF对齐、Token、Embedding、上下文窗口)
java·人工智能·后端·python·算法·语言模型·自然语言处理
坐吃山猪2 分钟前
Python04_序列和字符串
python
神奇小汤圆2 分钟前
面试官:为什么要尽量避免使用 IN 和 NOT IN 呢?
后端
敖正炀4 分钟前
StampedLock 详解
java·后端
tang7451639628 分钟前
mac的ideal中调用driver = webdriver.Chrome() 启动不了的原因
chrome·python·macos
码云数智-大飞15 分钟前
CSS 优先级详解:告别样式冲突,掌控网页“层叠”艺术
人工智能·python·tensorflow
han_hanker16 分钟前
Spring Boot 如何读取 application.yml 作为配置
java·spring boot·后端
迦南的迦 亚索的索19 分钟前
PYTHON_DAY21_数据分析
开发语言·python·数据分析