元组怎么写
用圆括号(也可以省略):
point = (3, 4)
point = 3, 4 # 等价
empty = ()
single = (1,) # 单元素必须加逗号!(1) 是个数字
和列表的区别
t = (1, 2, 3)
t[0] # 1 可以读
t[0] = 99 # TypeError: 不能改
t.append(4) # AttributeError: 没有 append
t + (4, 5) # 返回新元组,原 t 不变
元组一旦创建就不能变——这就是"不可变"。
为什么要不可变
- 可以当字典的键(list 不行)
{(0, 0): "原点", (1, 1): "对角"} - 多线程安全——别人不会偷偷改
- 比 list 更快、更省内存
- 表达"这是一组关联数据"的语义——比如坐标
(x, y)
拆包(最常用)
point = (3, 4)
x, y = point # 同时赋值
print(x, y) # 3 4
# 函数返回多个值,本质是返回元组
def divmod_(a, b):
return a // b, a % b
q, r = divmod_(10, 3) # 3, 1
交换变量
a, b = 1, 2
a, b = b, a # 一行交换,不需要中间变量
星号拆包
first, *rest = [1, 2, 3, 4, 5]
print(first) # 1
print(rest) # [2, 3, 4]
实战:返回多个值
def get_user(uid):
name = "WadeLy"
age = 30
return name, age # 返回元组
name, age = get_user(1) # 拆开接收
下一篇讲字典 Dict——Python 最重要的数据结构。