制作for循环的最佳方法是什么
for i in range(0,99,20)
迭代i = 0 20 40 60 80 99?
而不仅仅是i = 0 20 40 60 80?
现在我有一个if语句来检查modulo!= 0是否正确,如果为真,则会额外迭代。
答案 0 :(得分:2)
使用Python range
无法做到这一点。但这可以通过创建你的生成器函数来实现。
def myRange(start,end,step):
i = start
while i < end:
yield i
i += step
yield end
for i in myRange(0,99,20):
print(i)
输出:
0
20
40
60
80
99
答案 1 :(得分:2)
首先,包含结束条件通常没有多大意义,范围的概念是执行跳跃直到达到最终值。
尽管如此,您可以使用itertools.chain
作为:
from itertools import chain
for i in chain(range(0,99,20), [99]):
# ...
pass
chain
将迭代连接在一起。因此,在range(..)
用完之后,它将迭代下一个可迭代,依此类推。
上述方法不是很优雅:它需要一些关于chain
如何工作的知识。然而,我们可以封装那个逻辑:
def range_with_end(start, stop, step):
return chain(range(start, stop, step), (stop,))