Python for 循环详解
一、for 循环概述
for 循环是 Python 中用于遍历序列(如列表、元组、字符串)或其他可迭代对象的基本控制结构。它是 Python 提供的第二种循环机制(第一种是 while 循环)。理论上,for 循环能完成的任务,while 循环都可以实现,但 for 循环在遍历取值时语法更简洁、可读性更强。
本文详细讲解了 Python 中 for 循环的核心概念、语法规则及应用场景。内容涵盖 for 循环与 while 循环的对比、可迭代对象遍历、range 函数的多种用法、循环控制语句(break/continue/else)以及嵌套循环的实现。通过列表、字典、图形打印等实战案例,深入剖析了代码逻辑与 PEP8 规范,并提供了九九乘法表和金字塔图案的综合练习,帮助读者全面掌握 Python 迭代控制结构。

for 循环是 Python 中用于遍历序列(如列表、元组、字符串)或其他可迭代对象的基本控制结构。它是 Python 提供的第二种循环机制(第一种是 while 循环)。理论上,for 循环能完成的任务,while 循环都可以实现,但 for 循环在遍历取值时语法更简洁、可读性更强。
核心目的:简化迭代过程,避免手动管理索引变量,减少出错概率。
基本语法结构如下:
for 变量名 in 可迭代对象:
# 循环体代码
pass
__iter__ 方法的对象。next() 方法获取下一个元素。StopIteration 异常。使用 for 循环遍历列表元素:
l = ['lsj', 'a', 'b']
for x in l:
print(x)
输出结果:
lsj
a
b
对比 while 循环实现相同功能:
l = ["lsj", "b", "c"]
i = 0
while i < len(l):
print(l[i])
i += 1
可以看出,for 循环无需手动维护索引 i,代码更加简洁。
在 Python 中,直接遍历字典默认获取的是键 (key)。若需同时获取键和值,建议使用 .items() 方法。
dic = {'name': 'lsj', 'age': 18, 'gender': 'male'}
# 方式 1:仅遍历 key
for k in dic:
print(k, dic[k])
# 方式 2:遍历 key 和 value (推荐)
for k, v in dic.items():
print(f"{k}: {v}")
嵌套循环常用于处理多维数据或生成特定图形。
示例:打印矩形星号图
for i in range(3): # 外层循环控制行数
for j in range(5): # 内层循环控制每行字符数
print("*", end='') # end='' 防止自动换行
print() # 每行结束后换行
当需要基于数字范围进行循环时,range() 是最常用的工具。
range(stop) # 从 0 开始到 stop-1
range(start, stop) # 从 start 开始到 stop-1
range(start, stop, step) # 指定步长
示例:
list(range(6)) # [0, 1, 2, 3, 4, 5]
list(range(1, 10, 1)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(1, 10, 2)) # [1, 3, 5, 7, 9]
range() 返回一个列表,占用内存较大。range() 返回一个 range 对象(惰性求值),空间效率更高,适合大数值范围。虽然可以通过 range(len(list)) 配合索引访问列表,但 Python 官方推荐直接遍历元素,除非确实需要索引。
l = ['lsj', 'a', 'c']
# 不推荐:需要手动管理索引
for i in range(len(l)):
print(i, l[i])
# 推荐:直接遍历
for x in l:
print(x)
# 进阶:需要索引时使用 enumerate()
for index, value in enumerate(l):
print(index, value)
for i in range(5):
if i == 3:
continue # 跳过 3
if i == 4:
break # 遇到 4 停止
print(i)
# 输出:0 1 2
else 子句仅在循环正常结束(未被 break 中断)时执行。
for i in range(5):
if i == 3:
break
else:
print("循环正常结束")
for i in range(5):
if i == 6: # 永远不会触发
break
else:
print("循环正常结束")
if 语句应独立成行,保持可读性。# 符合 PEP8 的写法
for i in range(5):
if i == 4:
continue
print(i)
利用嵌套循环打印标准的九九乘法表。
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{j}*{i}={i*j}', end='\t')
print()
分析空格与星号的数量规律,使用数学表达式控制打印。
max_level = 5
for current_level in range(1, max_level + 1):
# 空格数 = 总层数 - 当前层数
for _ in range(max_level - current_level):
print(' ', end='')
# 星号数 = 2 * 当前层数 - 1
for _ in range(2 * current_level - 1):
print('*', end='')
print() # 换行
| 特性 | for 循环 | while 循环 |
|---|---|---|
| 类型 | 取值循环 (迭代) | 条件循环 |
| 适用场景 | 已知可迭代对象,遍历集合 | 未知循环次数,依赖条件状态 |
| 安全性 | 较高,不易死循环 | 较低,需注意退出条件 |
| 语法 | for x in obj: | while condition: |
掌握 for 循环及其相关工具(如 range, enumerate, zip)是编写高效 Python 代码的基础。在实际开发中,优先选择 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