一、引言
元组与列表类似,但不可修改!适合存储不应改变的数据!
💡 元组是"只读"的列表!
二、创建元组
# 空元组
empty_tuple = ()
# 有元素的元组
coordinates = (10, 20) # 坐标
colors = ("red", "green", "blue")
# 单个元素的元组(注意逗号!)
single = (100,) # 必须有逗号,否则会被当成整数
# 也可以省略括号
point = 10, 20
print(point) # (10, 20)
三、访问元素
fruits = ("苹果", "香蕉", "橙子", "葡萄")
# 和列表一样的索引
print(fruits[0]) # 苹果
print(fruits[-1]) # 葡萄
# 切片
print(fruits[1:3]) # ("香蕉", "橙子")
四、元组的不可变性
fruits = ("苹果", "香蕉", "橙子")
# ❌ 错误:不能修改
# fruits[0] = "西瓜" # 会报错!
# 但可以重新赋值(整个替换)
fruits = ("西瓜", "芒果")
print(fruits)
五、元组的常用操作
t1 = (1, 2, 3)
t2 = (4, 5, 6)
# 拼接
t3 = t1 + t2
print(t3) # (1,2,3,4,5,6)
# 重复
t4 = t1 * 2
print(t4) # (1,2,3,1,2,3)
# len()
print(len(t1)) # 3
# 成员判断
print(2 in t1) # True
# index 和 count
print(t1.index(2)) # 1
print(t1.count(3)) # 1
六、元组解包
# 基本解包
x, y = (10, 20)
print(x) # 10
print(y) # 20
# 交换变量(Python 特有!)
a, b = 1, 2
a, b = b, a # 一行就交换了!
print(a, b) # 2 1
# 用 * 收集剩下的
first, *rest = (1, 2, 3, 4, 5)
print(first) # 1
print(rest) # [2,3,4,5]
七、什么时候用元组?
# 1. 数据不应该被修改
person = ("张三", 25, "北京") # 姓名、年龄、城市
# 2. 作为字典的 key
position = (100, 200)
data = {position: "目标位置"}
# 3. 函数返回多个值
def get_size():
return 1920, 1080 # 返回元组
width, height = get_size()
八、元组 vs 列表
# 列表:可变,需要修改时用
shopping_list = ["牛奶", "面包", "鸡蛋"]
shopping_list.append("饼干")
# 元组:不可变,固定数据用
week_days = ("周一", "周二", "周三", "周四", "周五", "周六", "周日")
九、课后练习题
# 练习 1:创建一个元组存储 3 个坐标
# 练习 2:用元组解包交换两个变量
# 练习 3:思考什么时候用列表,什么时候用元组
总结
通过本章学习,你应该已经掌握了「元组 tuple:不可变序列与应用场景」的相关知识。
元组很实用!下一章学习列表的排序和反转!