上一章说了什么是列表,这章让我们一起学习操作列表、遍历整个列表。我们经常需要遍历列表的所有元素,对每个元素执行相同的操作。只需要几行代码,无论列表有多长,循环让我们能够对列表的每个元素都采取一个或一系列相同的措施,从而有效处理任何长度的列表。
前言
什么是遍历
就像:老师点名 —— 从第一个念到最后一个,每个人都点到;你查快递 —— 把包裹架上的件从左到右挨个看一遍。列表有 4 个水果,遍历就是"从第 1 个看到第 4 个,一个不落"。
为什么要遍历
for 循环存在的意义,也是第 4 章的核心。什么是缩进
打个比方:写作文写大纲,缩进就像分级 —— 顶格写的是"大标题",往里缩一格的是"属于这个标题的小点"。缩进让计算机知道谁包含谁。
为什么要缩进
{ } 把代码块括起来,缩进只是给你自己看的。但 Python 直接拿缩进来当"大括号"用 —— 缩进对了,程序逻辑才对;缩进错了,程序理解的意思就变了(甚至报错)。遍历整个列表
核心就一句话:for 拿列表里每个元素,临时起个名,缩进里的代码对每个元素都跑一遍。
基本写法

首先,我们先定义了一个列表,然后我们定义了一个for 循环,这行代码让 Python 从列表a 中取出了一个水果,并存储在变量b 中。然后我们让 Python 打印前面存储到变量b 中的水果。
对于列表中的每种水果,Python 都将重复执行for b in a: 和 print(b) 的代码,可以解读为:对于列表a 中 的每种水果都将其名字打印出来。
for循环更多操作
for 下面缩进的所有行,组成一个"循环体",对列表里每个元素都完整执行一遍。你写几行,它就每个元素都跑几行。

看输出:苹果 打了 2 句话,香蕉 名下也 2 句——因为每个元素都把这 2 行各跑了一遍。换行 \n 让每组之间空一行。
for循环结束后操作
缩进在 for 下面 → 每个元素都跑一遍;不缩进、跟 for 对齐 → 等整个循环跑完,才执行一次。

输出里"两种水果我都…"只出现 1 次,且排在 2 个水果之后——因为它在循环外,循环管不着。
避免缩进错误
Python 根据缩进来判断代码行与前一个代码行的关系。在上面的示例中,向我们显示消息的代码行是for 循环的一部分,因为它们缩进了。但需要我们注意的是一些常见的缩进错误。有时候,我们会将不需要缩进的代码块缩进,而对于必须缩进的代码块却忘了缩进。下面来说一下较为常见的缩进错误。
忘记缩进
对于for 语句后面且属于循环组成部分的代码行,一定要缩进!如果要是忘了缩进,Python 其实会提醒你的。


不必要的缩进
如果你不小心缩进了无需缩进的代码行,Python 将指出这一点。

认错表
| 坑 | 你写的 | 报错信息 | 意思 |
|---|---|---|---|
| 忘记缩进 | for n in [...]: 下一行没空格 |
IndentationError: expected an indented block |
for 后面必须跟缩进的循环体 |
| 不必要的缩进 | 普通行前面多了空格 | IndentationError: unexpected indent |
这行不属于任何代码块,不能缩进 |
| 忘记冒号 | for n in [...] 没写 : |
SyntaxError: expected ':' |
for/if/def 行末尾必须有冒号 |
| 缩进不一致 | 循环体内有的 4 格有的 6 格 | IndentationError: unexpected indent |
同一代码块缩进要统一 |
三条保命铁律
for/if/def行末尾,永远跟一个英文冒号:- 循环体统一缩进 4 个空格,多一格少一格都不行
- 想"每个元素都做"就缩进;想"做完收尾只来一次"就对齐
for、不缩进
创建数字列表
需要存储一组数字的原因有很多,例如,在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分等。在数据可视化中,处理的几乎都是有数字组成的集合。
列表非常适合用于存储数字集合,而 Python 提供了很多工具,可以帮我们高效处理这些数字列表。
函数 range()
range(1, 5) # [1,2,3,4] 终点 5 不取!
range(1, 6) # [1,2,3,4,5] 想包含 5 就写 6
range(2, 11, 2) # [2,4,6,8,10] 第 3 个数是步长(每次跳 2 )
range(5) # [0,1,2,3,4] 只给一个数 → 默认从 0 开始
range(起点, 终点) 终点那个数永远不取。 这是坑,记住"差一位"。

看清楚了!这里的关键区分:"第几个"和"下标"不是一回事。
先认清:你的列表长这样:下标 0 → 第1个水果 = 苹果 下标 1 → 第2个水果 = 梨子 下标 2 → 第3个水果 = 香蕉 下标 3 → 第4个水果 = 草莓 下标 4 → 第5个水果 = 橘子
第5个水果"橘子",它的下标是 4(不是5!)。
想 5 个全要,怎么写:for b in range(len(a)):

或者:print(a[b-1])

用 range() 造数字列表
要创建数字列表,可以使用函数list() 将range() 的结果直接转换为列表。如果将range() 作为list() 的参数,输出将为一个数字列表。

使用函数range() 时,还可以指定步长,例如,打印1-10内的偶数。

🔝这个示例中,函数range() 从2开始数,然后不断地加2,直到达到或超过终值(11),因此输入2,4,6,8,10。
数字列表的统计
在几个专门用于处理数字列表的 python 函数。你可以轻松地找出数字列表的最大值、最小值和总和。
min(digits) # 最小 0
max(digits) # 最大 9
sum(digits) # 求和 45
配套 len(列表) 还能顺手算出平均值。

列表解析
[算什么 for 变量 in 范围],等价于"空列表 + for循环 + append",写起来短但读起来要习惯。
篇幅有限,本章还有切片和元组需要学习,我分两篇文章一起学习。