玩蛇网提供最新Python编程技术信息以及Python资源下载!

python给指定范围内循环变量方法是?

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

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

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

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19077.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月31日 - 11时07分21秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules