Python中如何在for循环迭代列表时回到指定索引?
解决方案
原生for循环依赖迭代器实现,无法直接回溯到列表指定位置,我们可以通过自定义生成器来控制迭代流程,满足你的需求,具体实现如下:
MyList = ["test", "test2", "test3", "test4", "test5", "test6", "test7"] def custom_traversal(lst): target_index = lst.index("test3") # 获取"test3"的索引位置 for item in lst: yield item # 遍历到"test7"时,追加从"test3"开始的所有元素到迭代序列中 if item == "test7": yield from lst[target_index:] # 使用自定义生成器执行遍历 for item in custom_traversal(MyList): print(item)
代码说明
custom_traversal是自定义生成器函数,负责控制迭代内容:- 先正常遍历原列表的所有元素
- 当遇到
"test7"时,通过yield from语法将"test3"到列表末尾的元素追加到迭代流程中
- 外层
for循环遍历该生成器,即可实现遍历到"test7"后,回到"test3"位置继续遍历的效果
输出结果
运行后会依次输出:
test test2 test3 test4 test5 test6 test7 test3 test4 test5 test6 test7
如果需要无限循环从"test3"到"test7",只需修改生成器内的逻辑:
def custom_traversal(lst): target_index = lst.index("test3") for item in lst: yield item if item == "test7": while True: yield from lst[target_index:]
内容的提问来源于stack exchange,提问作者EliaOndacs
相关产品推荐
相关产品推荐

