Python For 循环详解
一、For 循环概述
For 循环是 Python 中用于遍历序列或其他可迭代对象的主要机制。它是 Python 提供的第二种循环结构(第一种是 While 循环)。理论上,For 循环能完成的功能,While 循环都可以实现,但 For 循环在遍历取值方面更加简洁和直观。
核心目的:简化代码逻辑,特别是在需要逐个处理列表、字符串、字典等数据结构中的元素时,For 循环比手动维护索引的 While 循环更高效且不易出错。
本文详细介绍了 Python 中 For 循环的核心概念、语法结构及实际应用。内容涵盖 For 循环与 While 循环的对比、Range 函数的用法、Break/Continue/Else 控制流机制,以及嵌套循环实战案例如九九乘法表和金字塔图形。此外,还补充了 Enumerate 和 Zip 等进阶迭代技巧,旨在帮助读者全面掌握 Python 循环逻辑,提升代码编写规范性与效率。

For 循环是 Python 中用于遍历序列或其他可迭代对象的主要机制。它是 Python 提供的第二种循环结构(第一种是 While 循环)。理论上,For 循环能完成的功能,While 循环都可以实现,但 For 循环在遍历取值方面更加简洁和直观。
核心目的:简化代码逻辑,特别是在需要逐个处理列表、字符串、字典等数据结构中的元素时,For 循环比手动维护索引的 While 循环更高效且不易出错。
基本语法结构如下:
for 变量名 in 可迭代对象:
# 循环体代码
pass
执行流程:
示例:遍历列表
l = ['lsj', 'a', 'b']
for x in l:
print(x)
# 输出:
# lsj
# a
# b
虽然两者都能实现循环,但在适用场景上有明显区别:
| 特性 | For 循环 | While 循环 |
|---|---|---|
| 类型 | 取值循环 (Iteration) | 条件循环 (Condition) |
| 控制方式 | 取决于可迭代对象的长度/内容 | 取决于布尔条件的真假 |
| 适用场景 | 已知遍历次数或需遍历集合 | 未知次数,依赖特定条件终止 |
| 代码简洁度 | 高,无需手动管理索引 | 低,需手动初始化及更新计数器 |
案例对比:取出 0-5 的值
For 循环实现:
for count in range(6):
print(count)
While 循环实现:
count = 0
while count < 6:
print(count)
count += 1
range() 函数常用于生成整数序列,配合 For 循环使用非常广泛。
基本用法:
range(stop) # 从 0 开始到 stop-1
range(start, stop) # 从 start 开始到 stop-1
range(start, stop, step) # 指定步长
示例:
print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1, 10, 1))) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1, 10, 2))) # [1, 3, 5, 7, 9]
Python 2 与 Python 3 的区别:
range() 返回一个列表,占用内存较大。range() 返回一个生成器对象,按需生成数值,内存效率更高。最佳实践:
尽量避免使用 range(len(list)) 的方式通过索引访问,推荐使用内置函数 enumerate()。
# 不推荐:通过索引访问
l = ['lsj', 'a', 'c']
for i in range(len(l)):
print(i, l[i])
# 推荐:使用 enumerate
for index, value in enumerate(l):
print(index, value)
在 For 循环中,可以使用以下关键字控制流程:
Break 示例:
for i in range(5):
if i == 3:
break
print(i)
# 输出:0, 1, 2
Continue 示例:
for i in range(5):
if i == 3:
continue
print(i)
# 输出:0, 1, 2, 4
For...Else 示例:
for i in range(5):
if i == 10:
print("找到目标")
break
else:
print("未找到目标")
# 输出:未找到目标
案例一:九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i*j}', end=' ')
print()
案例二:打印金字塔图形
分析规律:第 n 行空格数为 max_level - current_level,星号数为 2 * current_level - 1。
max_level = 5
for current_level in range(1, max_level + 1):
# 打印空格
for _ in range(max_level - current_level):
print(' ', end='')
# 打印星号
for _ in range(2 * current_level - 1):
print('*', end='')
print() # 换行
案例三:遍历字典
默认遍历的是键 (Key),如需同时获取键值对可使用 .items()。
dic = {'name': 'lsj', 'age': 18, 'gender': 'male'}
for k in dic:
print(k, dic[k])
# 更 Pythonic 的写法
for key, value in dic.items():
print(key, value)
在实际开发中,经常需要同时获取索引和值,或者并行遍历多个列表。
Enumerate:
names = ['Alice', 'Bob', 'Charlie']
for idx, name in enumerate(names):
print(f'{idx}: {name}')
Zip:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
for k, v in zip(keys, values):
print(k, v)
For 循环是 Python 编程中最基础的构建块之一。掌握其语法、控制流以及与其他内置函数的配合,能够显著提升代码的可读性和执行效率。建议遵循 PEP8 规范,优先使用 for item in iterable 而非 for i in range(len(iterable)),并充分利用 enumerate 和 zip 来简化逻辑。
通过理解 For 循环与 While 循环的差异,开发者可以根据具体场景选择最合适的循环结构,编写出既高效又易维护的代码。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online