我正在构建一个整数列表,它应该增加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)
这里的优点是可以很好地扩展到任意数量的步骤(虽然我现在无法真正想到它的好处 - 但也许你可以).
您可以使用列表推导和模数运算符来做这样聪明的事情.例如:
>>> [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)
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |