You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现0,1,2,1,0…的往返循环迭代器?

实现往返遍历的迭代器

你需要的是乒乓式(往返)循环的迭代器,itertools.cycle默认是从头重复序列,要实现0,1,2,1,0,1,2,1,0…的效果,只需要先构造一个往返的基础序列,再用cycle循环这个序列即可。

解决方案代码

from itertools import cycle

# 构造往返基础单元:0,1,2,1
base_seq = list(range(3)) + list(range(1, 0, -1))
myIterator = cycle(base_seq)

# 测试输出
print(next(myIterator))  # 0
print(next(myIterator))  # 1
print(next(myIterator))  # 2
print(next(myIterator))  # 1
print(next(myIterator))  # 0
print(next(myIterator))  # 1

通用函数封装

如果需要适配任意长度的序列,可以封装成通用函数:

from itertools import cycle

def ping_pong_cycle(n):
    if n <= 1:
        return cycle(range(n))  # 长度≤1时直接循环原序列
    # 生成基础往返序列:升序到n-1,再降序到1
    base_seq = list(range(n)) + list(range(n-2, 0, -1))
    return cycle(base_seq)

# 使用示例
iterator = ping_pong_cycle(3)
for _ in range(8):
    print(next(iterator))
# 输出:0 1 2 1 0 1 2 1

原理很简单:先创建一个包含一次完整往返的序列(比如[0,1,2,1]),再让cycle重复这个序列,就能实现你要的往返遍历效果。

内容的提问来源于stack exchange,提问作者John B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 11:27:17