首页 > 解决方案 > 在 for 循环期间修改 range()

问题描述

range()我可以在 for 循环期间修改吗?

for i in range(10):
    if something:
        pass
        # change range
    print(i)

一个例子:让方法somethingi == 5,身体将减少一个范围。

Expected output:
0
1
2
3
4
5
5
6
7
8
9

我有一个更复杂的range()喜欢range(0, len(data), 1024)

谢谢你的帮助!

标签: python

解决方案


您不能for在迭代过程中修改循环中使用的生成器。相反,您可以使用while循环重构代码。例如,如果您的范围是range(start, stop, step)(使用类似于Python 文档中使用的表示法),您可以编写如下循环:

i = start
while i < stop:
    # do stuff
    i += step

这允许您iwhile循环内随意修改。


推荐阅读