python积累--for循环--自增for循环--无限循环--控制步长

在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=0stop=30000step=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循环处理更加高效、灵活。在实际开发中,根据数据规模和业务逻辑选择合适的循环策略,往往能事半功倍。


扩展阅读