跳到主要内容

4.2 元组 tuple

元组(tuple)可以理解为不能修改的列表。这一节内容不多,了解即可。

创建元组

用圆括号 ()

point = (3, 5)
colors = ("红", "绿", "蓝")
single = (5,) # ⚠️ 只有一个元素时必须加逗号,否则 (5) 就是数字 5

和列表一样的地方

索引、切片、遍历、len 全都一样:

colors = ("红", "绿", "蓝")

print(colors[0]) # 红
print(colors[-1]) # 蓝
print(len(colors)) # 3

for c in colors:
print(c)

和列表不一样的地方:不可修改

colors = ("红", "绿", "蓝")

colors[0] = "紫" # ❌ TypeError: 'tuple' object does not support item assignment
colors.append("黄") # ❌ 没有 append 方法

为什么需要"不能改"的列表?

  • 有些数据天生不该变:坐标 (x, y)、生日 (年, 月, 日)、RGB 颜色值
  • 不可修改 = 更安全,防止程序其他地方误改
  • 元组比列表更省内存、速度略快

元组解包(很实用)

把元组里的值一次性赋给多个变量:

point = (3, 5)
x, y = point
print(x) # 3
print(y) # 5

其实平时你可能早就见过这种写法:

a, b = 1, 2 # 右边其实就是元组 (1, 2)
a, b = b, a # 交换两个变量的值,Python 经典写法!
print(a, b) # 2 1

练习

  1. 创建一个元组存放你的(姓名, 出生年, 城市),用解包的方式取出三个值并打印。
  2. 试着修改元组里的值,看看报什么错,记住这个错误长什么样。
点击查看答案
# 1
info = ("小明", 2008, "上海")
name, year, city = info
print(f"{name}{year} 年出生,来自{city}")

# 2
info[0] = "小红" # TypeError: 'tuple' object does not support item assignment

本章小结

  • 元组 = 不可修改的列表,用 () 创建
  • 单元素元组要写成 (5,)
  • 解包 x, y = point 和交换 a, b = b, a 是常用技巧

下一节是重头戏:4.3 字典 dict