Python:通过交替值递增的简单方法?

ist*_*ism 4 python increment

我正在构建一个整数列表,它应该增加2个交替值.

例如,从0开始,在4到2之间交替到20,将会:

[0,4,6,10,12,16,18]
Run Code Online (Sandbox Code Playgroud)

range和xrange仅接受增量值的单个整数.最简单的方法是什么?

mgi*_*son 13

我可能会使用一个简单itertools.cycle的循环步骤:

from itertools import cycle
def fancy_range(start, stop, steps=(1,)):
    steps = cycle(steps)
    val = start
    while val < stop:
        yield val
        val += next(steps)
Run Code Online (Sandbox Code Playgroud)

你这样称呼它:

>>> list(fancy_range(0, 20, (4, 2)))
[0, 4, 6, 10, 12, 16, 18]
Run Code Online (Sandbox Code Playgroud)

这里的优点是可以很好地扩展到任意数量的步骤(虽然我现在无法真正想到它的好处 - 但也许你可以).


N. *_*ead 6

您可以使用列表推导和模数运算符来做这样聪明的事情.例如:

>>> [3*i + i%2 for i in range(10)]
[0, 4, 6, 10, 12, 16, 18, 22, 24, 28]
Run Code Online (Sandbox Code Playgroud)