Python编程:从入门到实践
章节

第 4 章 操作列表

遍历、切片、推导式,让列表真正开始流动起来

这一章把列表从静态容器变成动态工作流,引入循环、数值序列、切片和元组等核心工具。

章节主张

真正重要的不是“会定义列表”,而是会用循环和切片把列表变成一种可批量处理的数据流。

中文释读

第三章讲的是列表是什么,第四章讲的则是列表怎么活起来。for 循环、range()、列表推导式、切片、复制和元组,这些工具一旦串起来,程序的规模感就开始出现了。作者把这一章安排得很像桥梁:它既是在处理列表,也是在把你送往控制流和更大程序结构的入口。

本章知识路线

  1. 循环是把重复劳动正式交给计算机的地方
  2. 切片、推导和元组是在塑造序列而不只是读取序列

关键论点

  • 循环是自动化重复操作的基础方式。
  • 切片和复制会影响数据安全与可控性。
  • 列表推导式能把生成逻辑压缩成更清晰的表达。

行动清单

  • 把 for、range、切片和推导式配合起来练习。
  • 明确原地修改和复制副本的区别。
  • 用 PEP 8 的格式规则约束早期代码习惯。

源章节深读

第 4 章 操作列表 在第 3 章中,你学习了如何创建简单的列表,还学习了如何操作列表 元素。在本章中,你将学习如何遍历整个列表,⽆论列表有多⻓,都 只需要⼏⾏代码就能做到。循环让你能够对列表的每个元素采取⼀个 或⼀系列相同的措施,从⽽⾼效地处理任意⻓度的列表,包括包含数 千乃⾄数百万个元素的列表。 4.1 遍历整个列表 你经常需要遍历列表的所有元素,对每个元素执⾏相同的操作。例如,在 游戏中,可能需要将每个界⾯元素平移相同的距离;对于包含数的列表, 可能需要对每个元素执⾏相同的统计运算;在⽹站中,可能需要显⽰⽂章 列表中的每个标题。如果需要对列表中的每个元素都执⾏相同的操作,可 使⽤ Python 中的 for 循环。 假设我们有⼀个魔术师名单,需要将其中每个魔术师的名字都打印出来。 为此,可以分别获取名单中的每个名字,但这种做法会导致许多问题。例 如,很⻓的名单将包含⼤量重复的代码;每当名单的⻓度发⽣变化时,都 必须修改代码。使⽤ for 循环,可让 Python 去处理每个元素,从⽽避免这 些问题。

4.1 遍历整个列表

4.1 遍历整个列表 你经常需要遍历列表的所有元素,对每个元素执⾏相同的操作。例如,在 游戏中,可能需要将每个界⾯元素平移相同的距离;对于包含数的列表, 可能需要对每个元素执⾏相同的统计运算;在⽹站中,可能需要显⽰⽂章 列表中的每个标题。如果需要对列表中的每个元素都执⾏相同的操作,可 使⽤ Python 中的 for 循环。 假设我们有⼀个魔术师名单,需要将其中每个魔术师的名字都打印出来。 为此,可以分别获取名单中的每个名字,但这种做法会导致许多问题。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.1 遍历整个列表 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.2 避免缩进错误

4.2 避免缩进错误 Python 根据缩进来判断代码⾏与程序其他部分的关系。在前⾯的⽰例中, 向各位魔术师显⽰消息的代码⾏是 for 循环的⼀部分,因为它们缩进了。 Python 通过缩进让代码更易读。简单地说,它要求你使⽤缩进让代码整洁 且结构清晰。在较⻓的 Python 程序中,你将看到缩进程度各不相同的代码 块,从⽽对程序的组织结构有⼤致的认识。 当你开始编写必须正确缩进的代码时,需要注意⼀些常⻅的缩进错误。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.2 避免缩进错误 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.3 创建数值列表

4.3 创建数值列表 需要存储⼀组数的原因很多。例如,在游戏中,需要跟踪每个⾓⾊的位 置,还可能需要跟踪玩家的⼏个最⾼得分;在数据可视化中,处理的⼏乎 都是由数(如温度、距离、⼈⼝数量、经度和纬度等)组成的集合。 列表⾮常适合⽤于存储数值集合,⽽ Python 提供了很多⼯具,可帮助你⾼ 效地处理数值列表。明⽩如何有效地使⽤这些⼯具后,即便列表包含数百 万个元素,你编写的代码也能运⾏得很好。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.3 创建数值列表 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.4 使用列表的一部分

4.4 使⽤列表的⼀部分 在第 3 章中,你学习了如何访问单个列表元素。在本章中,你⼀直在学习 如何处理列表的所有元素。除此之外,你还可以处理列表的部分元素,在 Python 中称为切⽚( slice )。 4.4.1 切⽚ 要创建切⽚,可指定要使⽤的第⼀个元素和最后⼀个元素的索引。与 range() 函数⼀样, Python 在到达指定的第⼆个索引之前的元素时停⽌。 要输出列表中的前三个元素,需要指定索引 0 和 3 ,这将返回索引分别为 0 、 1 和 2 的元素。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.4 使用列表的一部分 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.5 元组

4.5 元组 列表⾮常适合⽤于存储在程序运⾏期间可能变化的数据集。列表是可以修 改的,这对于处理⽹站的⽤户列表或游戏中的⾓⾊列表⾄关重要。然⽽, 你有时候需要创建⼀系列不可修改的元素,元组可满⾜这种需求。 Python 将不能修改的值称为不可变的,⽽不可变的列表称为元组( tuple )。 4.5.1 定义元组 元组看起来很像列表,但使⽤圆括号⽽不是⽅括号来标识。定义元组后, 就可使⽤索引来访问其元素,就像访问列表元素⼀样。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.5 元组 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.6 设置代码格式

4.6 设置代码格式 你编写的程序越来越⻓,因此有必要学习如何确保代码的格式⼀致。请花 些时间让代码尽可能易于阅读,这有助于你掌握程序是做什么的,也可以 帮助他⼈理解你编写的代码。 为了确保所有⼈编写的代码结构⼤致⼀致, Python 程序员会遵循⼀些格式 设置约定。学会编写整洁的 Python 代码后,就能明⽩他⼈编写的 Python 代 码的整体结构 —— 只要他们和你遵循相同的指南。要成为专业程序员,就 应该从现在开始遵循这些指南,养成良好的习惯。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.6 设置代码格式 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

4.7 小结

4.7 ⼩结 在本章中,你⾸先学习了如何⾼效地处理列表中的元素,如何使⽤ for 循 环遍历列表, Python 如何根据缩进来确定程序的结构,以及如何避免⼀些 常⻅的缩进错误。然后学习了如何创建简单的数值列表,以及可对数值列 表执⾏的⼀些操作。接着学习了如何通过切⽚来使⽤列表的⼀部分以及复 制列表。最后,你还学习了元组(它对不应变化的值提供了⼀定程度的保 护),以及如何在代码变得越来越复杂时设置格式,使其易于阅读。

这节解决什么:这一节主要解决《第 4 章 操作列表》里一个更具体的子问题:4.7 小结 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

辨析题

为什么很多人一学循环就突然觉得编程变强了?

本章图版学习路径

循环是把重复劳动正式交给计算机的地方

切片、推导和元组是在塑造序列而不只是读取序列