Python 基础:详解 for 循环、range 函数与控制流语句
本文详细介绍了 Python 中 for 循环的核心概念、语法结构及实际应用。内容涵盖可迭代对象的遍历原理、range 函数的三种参数用法、多层嵌套循环的实现逻辑,以及 break 和 continue 对循环流程的控制。此外,还补充了 for-else 子句的特殊用法、列表遍历时的性能优化建议及常见陷阱,旨在帮助开发者全面掌握 Python 循环机制,写出更高效、健壮的代码。

本文详细介绍了 Python 中 for 循环的核心概念、语法结构及实际应用。内容涵盖可迭代对象的遍历原理、range 函数的三种参数用法、多层嵌套循环的实现逻辑,以及 break 和 continue 对循环流程的控制。此外,还补充了 for-else 子句的特殊用法、列表遍历时的性能优化建议及常见陷阱,旨在帮助开发者全面掌握 Python 循环机制,写出更高效、健壮的代码。

在 Python 编程语言中,for 循环是一种用于遍历序列(如列表、元组、字符串)或其他可迭代对象的基本控制结构。与 while 循环不同,for 循环不需要手动维护计数器或定义复杂的终止条件,它会自动处理迭代过程。
核心概念
- 可迭代对象 (Iterable): 能够被迭代的对象,例如列表、字符串、字典、集合等。
- 遍历 (Iteration): 逐个访问对象中的元素。
- 轮询机制:
for循环本质上是对一批内容进行'逐个处理'的轮询机制。
for 临时变量 in 待处理数据集:
# 重复执行的代码块
pass
临时变量: 每次迭代时存储当前元素的变量名。待处理数据集: 任何可迭代对象。: 和缩进是 Python 语法的强制要求。注意: 理论上,
for循环无法构建无限循环,因为待处理的数据集大小是有限的。如果需要无限循环,应使用while True。
# 遍历字符串中的每个字符
for char in 'Python':
print(f"当前字符:{char}")
输出结果将依次打印 P, y, t, h, o, n。这展示了 for 循环如何将字符串的内容依次取出并处理,因此也被称为遍历循环。
name = "hello world python i love you"
for char in name:
if char == 'o':
print(char)
此代码会遍历字符串,每当遇到字母 'o' 时将其打印出来。
虽然 for 循环本质上是遍历'序列类型',但在需要生成数字序列时,直接使用 range() 函数是最常见且高效的方式。
单参数: range(stop)
range(5) 生成 [0, 1, 2, 3, 4]。双参数: range(start, stop)
range(2, 8) 生成 [2, 3, 4, 5, 6, 7]。三参数: range(start, stop, step)
range(1, 10, 2) 生成 [1, 3, 5, 7, 9]。range(10, 0, -1) 生成 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]。# 输出 0~9
for i in range(10):
print(i)
# 输出 1~100
for i in range(1, 101):
print(i)
# 输出 1~100,每次跳过一个数字(奇数)
for i in range(1, 101, 2):
print(i)
嵌套循环是指在一个循环体内再包含另一个循环。这在处理二维数据(如矩阵、表格)或多层逻辑关系时非常有用。
想象一个场景:坚持道歉 5 天,每天道歉 10 遍。这里涉及两个维度:天数(外层)和每天的次数(内层)。
# 外层循环:5 天
for day in range(1, 6):
print(f"这是我第{day}天的道歉")
# 内层循环:每天 10 遍
for count in range(1, 11):
print(f"老婆,我错了,这是我今天的第{count}次道歉")
print(f"老婆,第{day}天的道歉结束。。。\n")
print(f"我已经道歉了{day}天了,希望老婆不生气了")
for 循环也可以与 while 循环配合使用,适用于某些计数逻辑更灵活的场景。
for day in range(1, 6):
print(f"这是我第{day}天的道歉")
j = 1
while j <= 10:
print(f"老婆,我错了,这是我今天的第{j}次道歉")
j += 1
print(f"老婆,第{day}天的道歉结束。。。")
在循环执行过程中,有时需要根据特定条件跳过当前迭代或提前终止整个循环。
continue 语句用于立即结束当前这一次循环,直接进入下一次循环的判断。
# 跳过 7 的倍数
for i in range(100):
if i % 7 == 0:
continue # 满足条件直接跳过,不执行后续打印
print(i)
break 语句用于完全跳出当前所在的循环结构,不再执行后续的迭代。
li = ["马自达", "马自达", "马自达", "劳斯莱斯", "劳斯莱斯"]
for car in li:
if car == "劳斯莱斯":
print("碰见劳斯莱斯了,停止搜索")
break # 终止循环
print("正在刷马自达。。。")
Python 特有的 for...else 结构常被初学者忽略。当循环正常结束(即没有被 break 打断)时,else 块才会执行。
numbers = [1, 2, 3, 4]
found = False
for num in numbers:
if num == 5:
found = True
break
if not found:
print("未找到目标数字")
或者使用 else 简化:
for num in numbers:
if num == 5:
break
else:
print("循环正常结束,未找到 5")
避免修改列表长度: 在遍历列表时,尽量不要删除或添加元素,这可能导致索引错误或跳过元素。如果必须修改,请遍历副本。
original_list = [1, 2, 3, 4]
for item in original_list[:]: # 遍历切片副本
if item % 2 == 0:
original_list.remove(item)
使用 enumerate 获取索引: 当需要同时获取元素和索引时,优先使用 enumerate 而不是 range(len(list)),这样代码更简洁且效率更高。
items = ['a', 'b', 'c']
for index, value in enumerate(items):
print(f"索引 {index}: {value}")
列表推导式: 对于简单的转换操作,列表推导式通常比 for 循环更快且更易读。
squares = [x**2 for x in range(10)]
内存效率: 在 Python 3 中,range() 返回的是一个范围对象而非列表,因此即使范围很大也不会占用大量内存,适合处理大规模数据。
for 循环是 Python 中最常用的控制流工具之一。掌握其基本语法、range 函数的用法、嵌套逻辑以及 break/continue 的控制技巧,是编写高效 Python 程序的基础。结合 for-else 结构和最佳实践,可以进一步提升代码的可读性和健壮性。在实际开发中,应根据具体场景选择合适的循环方式,并注意避免常见的陷阱。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online