有序、不可变、靠逗号创建
元组用逗号创建,括号通常只是让它更清楚:t = 3, 1, 4 也是元组。单元素要写 (5,),(5) 只是整数 5;空元组写 ()。
索引、切片、len()、in、count()、index() 都能用;赋值、append、sort 等修改操作都不行。+ 和 * 会生成新元组。
选一个预设示例:看拾取滑台按索引读取元组,封条如何拒绝写入,
以及 list() 与 tuple() 怎样在两排料槽之间复制元素。
前排是元组(槽前上一行是正索引,下一行是负索引),压在上面的横杆和挂锁就是“不可变”的封条。后排没有封条,是可修改的列表。滑台上的竖旗落下、封条变亮,表示操作被拒绝。右侧托盘每一行是一个内层元组,各有自己的封条;左侧滑块选行 i,前方滑块选列 j。
准备滑台会按访问顺序逐个移动。
元组用逗号创建,括号通常只是让它更清楚:t = 3, 1, 4 也是元组。单元素要写 (5,),(5) 只是整数 5;空元组写 ()。
索引、切片、len()、in、count()、index() 都能用;赋值、append、sort 等修改操作都不行。+ 和 * 会生成新元组。
n[i][j] 先取内层元组,再取元素。元组不能让某个位置换成别的对象,但如果某个位置放的是列表,这个列表自身的内容仍然可以修改。
只含不可变对象的元组是可哈希的,能作为字典的键、放进集合;含有列表的元组则不可哈希。
list(t) 得到可修改的新列表,tuple(lst) 得到新的元组,原对象都不变。想“改”元组,就先转列表、改完再转回去。
转换只处理最外层:嵌套结构要逐层转换,比如 [list(p) for p in n]。sorted() 无论输入什么,都返回列表。