python中有办法在给定范围内往复循环一个变量吗?

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

互换的青春
浏览 1256回答 4
4回答

拉风的咖菲猫

pythonimport itertools def 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python