for循环用于遍历可迭代对象,自动依次处理每个元素;支持批量重命名、Excel数据处理等自动化任务;需注意缩进、避免修改遍历中的列表、合理命名变量及用enumerate替代range索引。

工作里重复操作太多?比如批量重命名文件、自动填表、统计表格数据——这些事交给 for 循环,几行代码就能搞定,比手动点一百次还稳。
for 循环到底在“循环”什么?
它不是随便转圈,而是按顺序遍历一个“可迭代对象”:列表、元组、字符串、range() 生成的数字序列,甚至 Excel 表格的行、文件的每一行,都算。
核心就一句:for 变量 in 可迭代对象:,冒号后缩进的代码块,就是每次循环要做的事。
- 变量会依次拿到对象里的每个元素(比如列表中的第1个、第2个……)
- 每拿一个,就执行一次缩进里的代码,直到拿完为止
- 不需要手动计数,也不用写“i = i + 1”,Python 自己记着走到哪了
批量处理文件名,5秒搞定
你有一堆截图叫 screenshot_1.png、screenshot_2.png……想统一改成 日报图-001.png、日报图-002.png?不用一个个右键重命名。
立即学习“Python免费学习笔记(深入)”;
这样写就行:
import os
for i, old_name in enumerate(os.listdir('.'), 1):
if old_name.endswith('.png'):
new_name = f'日报图-{i:03d}.png'
os.rename(old_name, new_name)
- enumerate(..., 1) 让循环自带编号,从1开始(默认从0)
- {i:03d} 是格式化写法,确保编号是三位数,比如 1 → 001
- endswith() 先筛选,避免误改其他文件
读Excel、算总和、自动填结果,不碰鼠标
用 pandas 读表后,for 循环能一行行看数据,边看边算、边改边存。
例如:把“销售额”列大于1000的订单,标记为“重点客户”,并算出这批客户的总金额:
import pandas as pd
df = pd.read_excel('订单表.xlsx')
total_high = 0
for idx, row in df.iterrows():
if row['销售额'] > 1000:
df.loc[idx, '备注'] = '重点客户'
total_high += row['销售额']
print(f'重点客户总销售额:{total_high}')
- iterrows() 返回(索引, 当前行)的组合,方便定位和修改
- df.loc[idx, '列名'] = ... 直接改原表对应位置的值
- 变量 total_high 在循环外定义,循环中持续累加
别踩坑:这几个细节决定循环能不能跑通
写 for 循环时卡住?大概率是这几个地方没注意:
- 忘记缩进:冒号后的代码必须缩进(4个空格或1个Tab),否则报 IndentationError
- 改正在遍历的列表:比如 for x in my_list: my_list.remove(x) —— 这会导致跳过元素,该删的没删干净
- 变量名起太随意:用 for i in range(10): print(i) 没问题;但用 for data in data: 就会覆盖原变量,后面就找不到原始数据了
- 需要下标又想取值?别硬写 for i in range(len(lst)):,直接用 enumerate(lst) 更安全清晰
基本上就这些。for 循环不是炫技,是把人从机械劳动里“解放出来”的最小单位工具。写熟了,你会发现——很多所谓“繁琐工作”,其实只是还没被 Python 看见而已。










