在Python编程中,循环结构是处理重复任务的核心工具。本文将详细解析for循环的进阶用法,特别是自增for循环 、无限循环 以及步长控制,并结合实际场景展示其应用技巧。
一、基础for循环回顾
最常见的for循环结合range()函数,用于遍历指定范围的数字序列:
python
for page in range(1, 11):
print("page:%s" % page)
range(1, 11)生成从1到10的整数(左闭右开)。- 每次迭代将当前值赋给变量
page,并执行循环体。
输出效果:
page:1
page:2
...
page:10
二、自增for循环与步长控制
1. 控制步长实现跳跃遍历
range(start, stop, step)支持步长参数,可实现**自增(或自减)**遍历:
python
for i in range(0, 30000, 100):
print(i)
start=0,stop=30000,step=100- 输出:0, 100, 200, ..., 29900(不包含30000)
2. 应用场景
- 批量数据处理:分页抓取数据时,每次偏移100条记录。
- 数值模拟:生成等差数列作为参数输入。
三、无限循环与for的结合
for循环本身需有限迭代对象,但无限循环 通常由while实现。下面是一个经典的生产者-消费者模式示例:
python
while 1: # 无限循环
try:
count = countNoDealedItem()
if count == 0:
break # 无待处理项时退出
links = findNoDealedItemLimit(0, 100)
for x in links: # 内层for处理批量数据
content = fetchraw(x['link'])
contentjson = json.loads(content)
# 数据加工...
insertItemRaw(contentjson)
dealItemlink(x['link'])
print("dealed %s %s %s" % (x['source'], x['type'], x['link']))
except Exception as e:
print(e) # 异常捕获,避免循环中断
关键点解析:
while 1创建条件恒真的无限循环,通过break控制退出。- 内层
for遍历待处理列表(此处findNoDealedItemLimit每次取100条)。 try-except保证即使某次处理出错,循环仍能继续。
四、步长进阶技巧
1. 反向步长
python
for i in range(10, 0, -2):
print(i) # 输出:10, 8, 6, 4, 2
2. 动态步长
通过变量控制步长,适应灵活逻辑:
python
step = 50
for i in range(0, 1000, step):
# 处理逻辑...
if some_condition:
step = 100 # 动态调整
3. 结合枚举和切片
python
items = ['a', 'b', 'c', 'd']
for idx in range(0, len(items), 2):
print(items[idx]) # 输出:a, c
五、性能与最佳实践
- 避免大范围range :若只需遍历部分数据,可用
itertools.islice切片。 - 使用生成器 :当步长循环用于数据流时,可用
yield生成器节省内存。 - 异常处理:无限循环中务必捕获异常,防止程序意外退出。
六、总结
| 循环类型 | 实现方式 | 适用场景 |
|---|---|---|
| 基础for循环 | for i in range(n) |
遍历固定次数 |
| 自增步长for循环 | for i in range(start, stop, step) |
等差数列遍历、分页处理 |
| 无限循环+内层for | while True + for |
持续任务处理,需条件退出 |
| 动态步长 | 修改变量控制step |
自适应逻辑 |
掌握这些技巧,可让Python循环处理更加高效、灵活。在实际开发中,根据数据规模和业务逻辑选择合适的循环策略,往往能事半功倍。
扩展阅读: