四、for 循环学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-for-loop-notes-4
summary
刚开始学循环的时候,我总是搞混 for 和 while。后来慢慢发现,for 循环就像是自动售货机——你放进去一列东西,它会自动一个个处理,不用你手动数到第几个了。这种"遍历"的方式在处理列表、字符串时特别方便!
tags
Python的逻辑处理
category
Python基础
icon
password
💡 学习感悟:刚开始学循环的时候,我总是搞混 for 和 while。后来慢慢发现,for 循环就像是自动售货机——你放进去一列东西,它会自动一个个处理,不用你手动数到第几个了。这种"遍历"的方式在处理列表、字符串时特别方便!
1. 为什么需要 for 循环?
我的理解
在没有 for 循环之前,如果要处理列表里的每个元素,我得写很多重复代码:
这样写不仅代码冗长,而且如果列表长度变了,代码还要改!
for 循环的出现解决了这个问题——它会自动遍历序列中的每个元素。
for vs while:我该怎么选?
特性 | for 循环 | while 循环 |
使用场景 | 遍历已知序列或固定次数 | 条件满足时重复执行 |
计数器管理 | 自动管理,无需手动 | 需要手动初始化、更新 |
语法复杂度 | 简洁,一行代码 | 需要条件表达式和更新语句 |
终止条件 | 遍历完所有元素自动结束 | 需要手动确保条件会变为假 |
典型用途 | 遍历列表、字符串、range() | 等待用户输入、游戏循环 |
📝 我的理解:
- 当需要遍历序列(列表、字符串等)或执行固定次数的循环时,优先使用
for循环
- 当循环次数不确定,需要根据条件判断是否继续时,使用
while循环
2. for 循环执行流程
2.1 for 循环执行流程图
2.2 执行步骤说明
- 开始:进入 for 循环
- 判断:检查可迭代对象中是否还有未遍历的元素
- 取值:如果有元素,取出下一个元素赋值给循环变量
- 执行:执行循环体中的代码
- 重复:回到步骤 2,继续判断
- 结束:当所有元素都遍历完成后,退出循环
📝 我的理解:for 循环就像是在排队取号——系统会自动叫号(遍历),你不需要记住现在叫到几号,轮到你了就处理,没号了就结束。
3. for 循环基本语法
3.1 基本结构
语法要点
for后面跟循环变量名
in后面跟要遍历的可迭代对象
- 循环体需要缩进(通常 4 个空格)
- 每次迭代,循环变量会被赋值为可迭代对象的下一个元素
3.2 简单示例
📝 我的理解:字符串也是可迭代对象!所以 for 循环可以逐个字符遍历字符串,这在处理文本时很有用。
4. range() 函数
4.1 什么是 range()?
range() 是 Python 内置函数,用于生成一个整数序列。它常与 for 循环配合使用,实现固定次数的循环。4.2 range() 工作原理示意图
4.3 range() 的三种用法
⚠️ 踩坑记录:range() 是左闭右开的!range(5)生成 0-4,不包括 5。刚开始我总以为是 1-5,结果程序出错...记住这个规律:包含起点,不包含终点。
5. break 语句
5.1 什么是 break?
break 语句用于立即终止循环,无论是否还有未遍历的元素。程序会跳出循环体,继续执行循环后面的代码。5.2 break 执行流程图
5.3 break 使用场景
- 找到目标值后提前退出
- 满足特定条件时停止遍历
📝 我的理解:break 就像是紧急出口——一旦满足条件,立刻跳出循环,不再处理后面的元素。这在查找元素时特别有用,找到就可以停下来了。
6. continue 语句
6.1 什么是 continue?
continue 语句用于跳过当前迭代的剩余代码,直接进入下一次循环。它不会终止整个循环,只是跳过本次循环中 continue 后面的代码。6.2 continue 执行流程图
6.3 continue 使用场景
- 跳过某些特定值的处理
- 过滤不符合条件的数据
📝 我的理解:continue 就像是跳过当前,继续下一个。遇到 continue 时,当前这次循环剩下的代码不执行了,直接进入下一次迭代。适合用来过滤数据。
7. for-else 结构
7.1 什么是 for-else?
for 循环可以带一个 else 子句。当循环正常结束(没有被 break 中断)时,else 块会被执行。7.2 for-else 执行流程图
7.3 使用场景
- 循环结束后执行清理操作
- 检查循环是否正常完成
- 实现搜索逻辑(没找到时执行)
📝 我的理解:for-else 这个结构刚开始让我有点困惑——为什么循环后面还能跟 else?后来理解了:else 是在循环正常结束时执行的,如果被 break 了就不执行。这在查找元素时很有用——找到了 break,没找到就执行 else 提示。
8. enumerate() 函数
8.1 什么是 enumerate()?
enumerate() 函数用于在遍历可迭代对象时,同时获取元素的索引和值。8.2 enumerate() 工作原理示意图
8.3 使用场景
- 需要同时访问元素的位置和内容
- 遍历列表时需要知道当前是第几个元素
📝 我的理解:enumerate() 就像是给每个元素贴上了序号标签,让你既能看到内容,又能知道它是第几个。比用range(len(list))的方式更 Pythonic!
9. zip() 函数
9.1 什么是 zip()?
zip() 函数用于将多个可迭代对象并行遍历,每次从每个对象中取一个元素,组合成一个元组。9.2 zip() 工作原理示意图
9.3 使用场景
- 同时遍历多个列表
- 将多个列表的数据配对处理
📝 我的理解:zip() 就像是拉链——把两个列表像拉链一样一一对应地拉在一起。如果两个列表长度不一样,会以短的为准。
10. 嵌套 for 循环
10.1 什么是嵌套循环?
在一个
for 循环内部再写另一个 for 循环,称为嵌套循环。外层循环每执行一次,内层循环会完整执行一遍。10.2 嵌套循环执行流程图
10.3 使用场景
- 打印二维图形
- 处理多维数据
- 实现复杂的迭代算法
📝 我的理解:嵌套循环就像是时钟的时针和分针——时针走一格,分针要走完整的一圈。外层循环控制行,内层循环控制列,这样就能处理二维问题了。
11. 列表推导式
11.1 什么是列表推导式?
列表推导式是一种简洁的创建列表的方式,它使用
for 循环在一行代码中生成列表。11.2 列表推导式工作原理示意图
11.3 使用场景
- 根据现有列表创建新列表
- 对列表元素进行转换
- 过滤列表元素
📝 我的理解:列表推导式是 Python 的语法糖——把原本需要多行循环的代码压缩成一行。但要注意,如果逻辑太复杂,还是建议用传统循环,否则可读性会变差。
12. 实际应用案例
12.1 计算列表元素之和
12.2 查找列表中的最大值
12.3 统计字符串中各字符出现次数
13. 遇到的问题和解决
13.1 循环变量在循环外还能用
⚠️ 踩坑记录:刚开始我以为循环变量 i 只在循环内部有效,结果发现循环外面还能访问!这在其他语言(如 C、Java)中是不行的。要注意不要不小心用到循环后的变量值。
13.2 不要在循环中修改正在遍历的列表
⚠️ 踩坑记录:我曾经在遍历列表时删除元素,结果发现有些元素被跳过了!这是因为删除元素后列表长度变了,索引也变了。正确做法是创建新列表。
13.3 range() 不是列表
📝 我的理解:range() 是惰性求值的——它不会一次性生成所有数字,而是按需生成。这样更省内存,特别是范围很大的时候。
14. 核心知识点整理
14.1 for 循环的基本形式
14.2 range() 的三种用法
range(stop):0 到 stop-1
range(start, stop):start 到 stop-1
range(start, stop, step):start 到 stop-1,步长 step
14.3 循环控制语句
- break:立即终止整个循环
- continue:跳过当前迭代,进入下一次
- else:循环正常结束时执行(被 break 则不执行)
14.4 实用函数
- enumerate():同时获取索引和值
- zip():并行遍历多个可迭代对象
14.5 列表推导式
14.6 常见错误
- range() 是左闭右开区间
- 不要在遍历列表时修改它
- 循环变量在循环外仍然可用
必须要能够做出下面的.
- 使用
for循环计算 1 到 100 的和
- 使用
for循环打印斐波那契数列的前 20 项
- 使用
for循环和continue打印 1-50 中所有 3 的倍数
- 使用
for循环和break在列表中查找第一个负数
- 使用
for循环和enumerate()遍历列表,打印每个元素的索引和值
- 使用列表推导式创建一个包含 1-20 中所有偶数的列表
Loading...
