如何在Python中重启for循环?新手求解修改列表后重置循环的方法
如何在修改列表后重启循环?
你原来的for循环没法直接实现需求——因为range(z)在循环启动前就生成了固定的整数序列,就算后面修改了列表a的长度,循环的迭代次数还是最初的z次,而且没法让for循环从头再来。
换用外层while循环+内层for循环的组合就能解决,直接看代码示例:
a = [some list] while True: # 每次重启前都重新获取列表的最新长度 current_len = len(a) need_restart = False for i in range(current_len): if 你的判断条件: # 满足条件时执行的操作 do something else: # 修改列表a的操作 do some changes in "a" # 标记需要重启循环 need_restart = True # 跳出当前的for循环,回到外层while break # 如果整个for循环正常跑完没触发重启,就退出外层循环 if not need_restart: break
逻辑说明:
- 外层
while True是一个无限循环,直到我们主动退出 - 每次进入外层循环,都会重新获取
a的最新长度,保证内层for循环基于最新的列表迭代 - 当触发else分支修改
a后,标记need_restart为True并break内层for循环,外层while会立刻重新执行,相当于让循环从i=0开始 - 如果内层for循环完整执行完所有元素都没触发重启,就把
need_restart设为False,退出外层循环,整个流程结束
如果你不想用嵌套循环,也可以直接用while循环手动控制索引:
a = [some list] while True: i = 0 current_len = len(a) need_restart = False while i < current_len: if 你的判断条件: do something i += 1 else: do some changes in "a" need_restart = True break if not need_restart: break
注意事项:
要确保你的逻辑里存在能让循环正常退出的情况——要是每次修改a后都会触发else分支,循环会无限重启,永远停不下来。
内容的提问来源于stack exchange,提问作者Soumyadeep Chakraborty
相关产品推荐
相关产品推荐

