python给指定范围内循环变量方法是?,python变量,Hi,在python中有


Hi,在python中有简单的写法可以让我在给定范围内往复循环一个变量吗?
如,给定range(4),我希望变量像这样变化:
0,1,2,3,2,1,0,1,2,3....直到变化指定的次数或者其它条件满足为止。

只是整数的话,直接取余就行

pythonimport itertoolsdef bounce(interval):    """Infinite bounce for specific range list."""    down = reversed(interval[1:-1])    return itertools.cycle(itertools.chain(interval, down))# >>> list(itertools.islice(bounce(range(5)), 20))# [0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3]

itertools.cycle(iterable)
Make an iterator returning elements from the iterable and saving a copy of each. When the iterable is exhausted, return elements from the saved copy. Repeats indefinitely. Equivalent to:

def cycle(iterable):    # cycle('ABCD') --> A B C D A B C D A B C D ...    saved = []    for element in iterable:        yield element        saved.append(element)    while saved:        for element in saved:              yield element

Note, this member of the toolkit may require significant auxiliary storage (depending on the length of the iterable).

其实我想要的是从小到大,再从大到下,再从小到大,并不是直接重复的过程。

我后来自己想了一个实现

from itertools import cycle, chain# Get a sequence like (0,1,2,3,2,1)base_sequence = chain(range(n), range(n - 2, 0, -1))for i in cycle(base_sequence):    # do something    if condition_satisfied:        break

编橙之家文章,

评论关闭