在范围函数内更改步长值?
问题描述
list1 = [1, 2, 3, 4]
我正在尝试找出一种方法来更改每个打印 i 的步长值
i'm trying to figure out a way to change the step value for each printed i
我尝试过的
r = 0
for i in range(0, 10, list1[r]):
print i
r = r + 1
解决方案
我建议使用 while
循环来实现你自己的生成器.示例 -
I would suggest implementing a generator of your own for this using while
loop. Example -
def varied_step_range(start,stop,stepiter):
step = iter(stepiter)
while start < stop:
yield start
start += next(step)
那么你可以把它当成——
Then you can use this as -
for i in varied_step_range(start,stop,steplist):
#Do your logic.
我们执行 step = iter(stepiter)
以便 stepiter
可以是任何类型的可迭代对象.
We do the step = iter(stepiter)
so that stepiter
can be any kind of iterable.
演示 -
>>> def varied_step_range(start,stop,stepiter):
... step = iter(stepiter)
... while start < stop:
... yield start
... start += next(step)
...
>>> for i in varied_step_range(0,10,[1,2,3,4]):
... print i
...
0
1
3
6
相关文章