有序、可变、按位置取
列表用 [] 创建,元素可以是任意类型。索引从 0 开始,-1 是最后一个。索引越界会抛出 IndexError,切片越界则自动截断。
切片 a[start:stop:step] 总是返回新列表。append、insert、remove、sort 原地修改并返回 None;pop 返回被删除的元素;sorted() 返回新列表。
选一个预设示例,看拾取滑台按索引访问料槽、过滤旗标判断 if、
结果落进新列表;右侧矩阵托盘演示嵌套列表 m[i][j]。
前排是原列表 nums(每个槽前方上一行是正索引,下一行是负索引),后排是新列表。滑台上的竖旗升起表示 if 条件通过,落下表示被过滤。右侧托盘:左侧滑块选行 i,前方滑块选列 j。
准备滑台会按访问顺序逐个移动。
列表用 [] 创建,元素可以是任意类型。索引从 0 开始,-1 是最后一个。索引越界会抛出 IndexError,切片越界则自动截断。
切片 a[start:stop:step] 总是返回新列表。append、insert、remove、sort 原地修改并返回 None;pop 返回被删除的元素;sorted() 返回新列表。
[表达式 for 变量 in 可迭代对象 if 条件] 等价于先建空列表,再循环、判断、append。末尾的 if 负责过滤;写在前面的 a if 条件 else b 是条件表达式,不过滤。
多个 for 的顺序与嵌套循环的书写顺序一致。Python 3 中,生成式的循环变量不会泄漏到外面。逻辑复杂时,普通循环往往更好读。
m[i] 取出第 i 行(也是一个列表),m[i][j] 再取这一行的第 j 个。展开、转置都可以用嵌套的生成式完成。
创建二维列表时用 [[0] * 3 for _ in range(3)]。[[0] * 3] * 3 会让三行指向同一个内层列表,改一处,三行一起变。