在范围函数内更改步长值?

2022-01-24 00:00:00 python python-2.7 range

问题描述

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

相关文章