在for循环期间修改range()
我可以range()在 for 循环期间修改吗?
for i in range(10):
if something:
pass
# change range
print(i)
一个例子:让 method somethingbei == 5和 body 将减少一个范围。
Expected output:
0
1
2
3
4
5
5
6
7
8
9
我有一个更复杂的range()像range(0, len(data), 1024)。
谢谢你的帮助!
回答
您不能for在迭代过程中修改循环中使用的生成器。相反,您可以使用while循环重构您的代码。例如,如果您的范围是range(start, stop, step)(使用类似于Python 文档中使用的符号),您可以按如下方式编写循环:
i = start
while i < stop:
# do stuff
i += step
这允许您i在while循环内随意修改。