Python Academy · 课时

元组与不可变性

了解元组及其不可变性,并掌握何时应优先使用元组而不是列表。

第 3 / 4 课14 个步骤

元组与不可变性 是 CoddyKit 上的免费 Python Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

简介

元组是有序且不可变的序列。创建后,其中的元素就不能再更改。

创建元组

t = (1, 2, 3) 或 t = 1, 2, 3(括号可省略)。单元素元组需要末尾的逗号:t = (1,)。
t = (1, 2, 3)
singleton = (42,)
print(t, singleton)

元组的不可变性

t[0] = 99 会引发 TypeError。元组创建后不能修改,这是元组最重要的特性。
t = (1, 2, 3)
# t[0] = 99  # TypeError
print(t[0])

元组索引与切片

t[0]、t[-1] 和 t[1:3] 的用法与列表完全相同。元组支持所有读取操作。
t = (10, 20, 30)
print(t[1])
print(t[:2])

元组的打包与解包

a, b = (1, 2) 会解包该元组。以下写法也可以:a, b = b, a,无需临时变量即可交换变量。
a, b = 1, 2
a, b = b, a
print(a, b)

将元组用作字典键

由于元组可哈希,因此可以用作字典键:coords = {(0,0): 'origin'}。列表不能用作字典键。
coords = {(0, 0): 'origin', (1, 0): 'right'}
print(coords[(0, 0)])

元组与列表——何时使用

对于结构固定的异构数据(例如 (name, age)),请使用元组。对于同质且长度可变的数据,请使用列表。
point = (3.0, 4.0)  # tuple: fixed structure
scores = [85, 90, 78]  # list: variable

命名元组

from collections import namedtuple; Point = namedtuple('Point', ['x','y']); p = Point(3,4); p.x 的值为 3。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x, p.y)

元组方法

元组只有 count() 和 index() 两个方法。t.count(2) 统计出现次数。t.index(2) 返回首次出现的位置。
t = (1, 2, 2, 3)
print(t.count(2))
print(t.index(2))

元组的性能

由于 Python 可以优化不可变对象,元组比列表略快且占用更少的内存。
import sys
print(sys.getsizeof((1,2,3)))
print(sys.getsizeof([1,2,3]))

在列表与元组之间转换

list(t) 将元组转换为列表。tuple(lst) 将列表转换为元组。当您只需暂时进行修改时,这种转换很有用。
t = (1, 2, 3)
lst = list(t)
lst.append(4)
t2 = tuple(lst)
print(t2)

快速检查

为什么元组可以用作字典键,而列表不能?

回顾

元组:不可变、有序、可哈希。元组适用于固定结构的数据、字典键和多个返回值。namedtuple 还提供属性访问。

继续学习

做得很好!请继续学习下一课,进一步提升您的技能。
免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
76
课程
320

常见问题解答

「元组与不可变性」课时是免费的吗?

是的 — 「元组与不可变性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「元组与不可变性」这节课中我会学到什么?

了解元组及其不可变性,并掌握何时应优先使用元组而不是列表。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「元组与不可变性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建与访问列表
  2. 修改列表
  3. 元组与不可变性
  4. 嵌套列表与迭代
← 返回 Python Academy