元组是什么
列表能随便改、随便加,但有些数据你不希望被改动。比如坐标点 (x, y)、一周七天的名字。元组就是一种「封好就不能动」的容器,用圆括号创建。
用「封好口的礼盒」理解:你能看里面有什么、能数有几样,但不能再加、不能换。
创建与读取
列表用方括号 [],元组用圆括号 (),逗号分隔元素。读取和列表完全一样:
point = (3, 4)
point[0] # 3,下标从 0 开始
len(point) # 2,看有几个会用列表,元组的「读」就全会了。
不可变:元组最关键的性质
元组建好以后不能改某一格、不能加、不能删。写 point[0] = 9 想改,Python 会直接报错(TypeError)。
「能不能改」正是元组和列表的分水岭:列表可变,元组不可变。用元组还能当「保险」,明确告诉读代码的人「这几个值我故意不让改」。
列表 vs 元组:怎么选
| 列表 [] | 元组 () | |
|---|---|---|
| 能不能改 | 可变 | 不可变 |
| 速度 | 稍慢 | 更快更省 |
| 适合装 | 会变动的数据 | 固定不变的数据 |
简单记:数据会变用列表,数据定死用元组。元组因为不会变,电脑处理起来还更快更省内存。
解包:一次拆给多个变量
元组有个特别好用的招,解包,把元组里的值一次性分别装进多个变量:
point = (3, 4)
a, b = point # a=3, b=4
x, y = 10, 20 # 一行给两个变量赋值按位置对应,左边几个变量、右边就得几个值,多了少了都会报错。上一课会反复用到它(比如字典的 items 遍历)。