自学Python第五课:操作列表(1)

上一章说了什么是列表,这章让我们一起学习操作列表、遍历整个列表。我们经常需要遍历列表的所有元素,对每个元素执行相同的操作。只需要几行代码,无论列表有多长,循环让我们能够对列表的每个元素都采取一个或一系列相同的措施,从而有效处理任何长度的列表。


前言

什么是遍历

什么是遍历
把列表里的东西,一个一个挨着过一遍。
就像:老师点名 —— 从第一个念到最后一个,每个人都点到;你查快递 —— 把包裹架上的件从左到右挨个看一遍。列表有 4 个水果,遍历就是"从第 1 个看到第 4 个,一个不落"。

为什么要遍历

为什么要遍历
因为列表里东西多,你不可能手写 100 行去挨个处理。遍历让你写一次代码,它自动对每一个元素都做一遍 —— 这正是 for 循环存在的意义,也是第 4 章的核心。

什么是缩进

什么是缩进
一行代码开头的空格(Python 里约定用 4 个空格)。它不只是排版好看,而是告诉 Python"这行代码归谁管"
打个比方:写作文写大纲,缩进就像分级 —— 顶格写的是"大标题",往里缩一格的是"属于这个标题的小点"。缩进让计算机知道谁包含谁。

为什么要缩进

为什么要缩进
别的语言(比如 C、Java)用大括号 { } 把代码块括起来,缩进只是给你自己看的。但 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 同一代码块缩进要统一

三条保命铁律

  1. for / if / def 行末尾,永远跟一个英文冒号 :
  2. 循环体统一缩进 4 个空格,多一格少一格都不行
  3. 想"每个元素都做"就缩进;想"做完收尾只来一次"就对齐 for、不缩进
一句话:缩进是 Python 的语法,不是排版。 它决定了程序的逻辑,错了要么报错、要么答案不对。

创建数字列表

需要存储一组数字的原因有很多,例如,在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分等。在数据可视化中,处理的几乎都是有数字组成的集合。

列表非常适合用于存储数字集合,而 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",写起来短但读起来要习惯。

篇幅有限,本章还有切片和元组需要学习,我分两篇文章一起学习。

上一篇 桌角养了只AI宠物:PetOS使用体验
下一篇 自学Python第六课:操作列表(2)

与「遗落时光」交流

看完这篇有收获?欢迎联系作者,一起聊技术、提建议~

公众号 Q 加QQ 加微信 发邮件