这套课程按知识依赖排列。本篇的前置知识是:第 16、18 篇。学完后,你应该能够阅读和编写单层列表推导式。
本篇要解决的问题
本篇只处理“列表推导式:把简单循环写成数据变换”这一件事。示例基于 Python 3.14.6,在 macOS 环境核验;除明确标注的终端命令外,代码本身只使用 Python 标准能力。
先看清一个容易误解的细节
推导式从右侧输入序列逐项取值,可选地过滤,再计算左侧表达式,最终形成一个新列表。
核心概念
- 推导式适合“遍历—可选过滤—产生一个新值”的简单流程。
- 包含多层嵌套或复杂判断时,普通循环通常更清楚。
- 推导式创建新列表,不修改输入列表。
跟着示例运行
把下面代码保存到本课脚本并运行:
numbers = [1, 2, 3, 4, 5]
squares = [number * number for number in numbers]
even_squares = [number * number for number in numbers if number % 2 == 0]
print(squares)
print(even_squares)
预期结果:
[1, 4, 9, 16, 25]
[4, 16]
输出中包含环境路径、集合元素或日志格式时,具体文字和顺序可能随本机环境变化;判断是否成功应以本篇说明的关键结果为准。
按执行顺序拆开看
- 第一条推导式对每个数字计算平方,结果按输入顺序放进新列表。
- 第二条先用
number % 2 == 0过滤偶数,只有通过过滤的数字才计算平方。
初学者容易混淆的地方
- 把表达式、循环和过滤条件的书写顺序误当作执行顺序;阅读时从
for开始找输入。 - 在推导式中堆叠多层循环和复杂分支,使代码比普通循环更难读。
练习
- 把字符串列表转换为长度列表。
- 筛选 1 到 20 中能被 3 整除的数。
练习应先独立完成,再通过增加 print 输出或检查文件内容观察中间状态。当前课程尚未讲到的能力,不要求提前搜索复杂写法。
本篇边界
本篇目标是阅读和编写单层列表推导式。没有展开的高级机制会放到后续课程;先确保能够解释示例中每一行代码,再进入下一篇。
相关文章
01|Python 程序从源码到输出经历了什么
面向按顺序学习 Python 的初学者,本篇在零基础上,帮助读者理解源代码、解释器和输出之间的关系。
02|在 macOS 安装并确认 Python 3 环境
面向按顺序学习 Python 的初学者,本篇在第 01 篇知识上,帮助读者在 macOS 中确认 Python 3.14 和 pip 是否可用。
03|交互式解释器和 Python 脚本怎么选择
面向按顺序学习 Python 的初学者,本篇在第 02 篇知识上,帮助读者根据任务选择 REPL 或 `.py` 脚本。
04|建立第一个 Python 项目目录
面向按顺序学习 Python 的初学者,本篇在第 03 篇知识上,帮助读者理解当前目录并正确运行项目脚本。

