show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们深入了解了元组
- 元组不可变指的是
- 为元组对象分配了空间后
- 元组对象就不再改变
- 元组变量指的是
- 引用元组常量的变量名
- 元组不可变指的是
- python中有三种不可变(immutable)的对象类型
- 数字
- 字符串
- 元组
- 元组是不是绝对不可变呢?🤔
- 构造
- 不是说tuple是一种内建的不能修改(immutable)的序列么?
- 那这个东西应该怎样理解呢?
- t 是一个元组 有两个元素构成
- 第零个元素 t[0] 是一个列表
- 第一个元素 t[1] 是一个元组
- 元组的是第0个元组项是列表
- t[0] = [1, 2]
- 列表是mutable的
- 是可以修改的
- 把这个列表里面的第0个元素修改为"a"
- 修改的不是元组的元组项
- 第0个元组项还是引用原来列表地址
- 没有被修改
- 列表本身的列表项可以被修改
- 上图中红框的位置
- 修改的是列表的元素
- 修改的不是列表
- 那如何理解修改的不是列表呢?
- 元素第零个元素指向这个列表
- 指向的这个列表可以修改(append、remove...)
- 但是指向的这个列表的这个事情本身不能修改
- 指向的地址和类型不能修改
- 1, 2
- 这种情况算什么呢?
- 只有逗号
- 也会被自动封包成是元组
- 这常常被用来进行多个变量的赋值
- 这种赋值叫做什么赋值呢?
- 一般赋值(assignment)
- a = 1
- 链式赋值
- a = b = 1
- 增强赋值(augmented assignment)
- a += 1
- 平行赋值(parallel assignment)
- a, b = 0, 1
- 可以用列表进行平行赋值吗?
- 实验列表
- 确实是可以的
- 如何理解呢?
- 右边经历了一个类型转化的过程
- 解包unpacking
- 解构destructuring
- 但是如果等号前后变量数量不一致
- 怎么办呢?
- 前后数量不一致就不行
- 前后都经历了一个 unpack 的过程
- 前后 unpack 出的变量数量要相等
- 才建立对应关系
- 不能出现二桃杀三士的情况
- 元组也可以进行加法和乘法的运算吗
- 元组可以进行加法和乘法计算
- 计算的结果还是元组
- 有个逗号就会自动封包
- 有了个逗号
- 意味着这就是一个元组
- 这就是计算的分解过程
- 元组可以嵌套么?
- 元组是支持嵌套的
- 而且嵌套的元组也可以用索引来定位
- 做个练习
- 默认的逗号对应的不是列表
- 而是元组
- 上次我们总结了元组运算
- 有时候
- 一个逗号就构建一个元组
- 元组也有加法和乘法运算
- 元组还有什么应用场景呢?🤔
- 下次再说 👋