如何在 python 中重新启动“for”循环? [复制]

Posted

技术标签:

【中文标题】如何在 python 中重新启动“for”循环? [复制]【英文标题】:how to restart "for" loop in python ? [duplicate] 【发布时间】:2014-01-10 14:41:14 【问题描述】:

如何在 python 中做到这一点:

x = [1,2,3,4,5,6]
for i in x:
    if i == 4:
       -restart the loop from beginning-
    else:
        print i

所以这里它会打印到 4 然后重复循环

【问题讨论】:

“重复”是什么意思?您是说打印 (1,2,3,4,1,2,3,4) 等吗? 我会使用递归函数将循环定义为函数 我会使用itertools.cycle 看看this answer,第二个选项 这样做的目的是什么?为什么不直接做while True: for i in range(1, 5): 【参考方案1】:

这个呢:

x = [1,2,3,4,5,6]
restart = True
while restart:
    for i in x:
        # add any exit condition!
        # if foo == bar:
        #   restart = False
        #   break
        if i == 4:
           break
        else:
            print i

【讨论】:

也可以把print i放在if语句之前,去掉else【参考方案2】:

你不能直接。使用 itertools.cycle

for idx, val in enumerate(itertools.cycle(range(4))):
    print v
    if idx>20:
        break

idx 用于打破无限循环

【讨论】:

【参考方案3】:

也许是这样的?但它会永远循环......

x = [ ..... ]
restart = True
while restart:
    for i in x:
        if i == 4:
            restart = True
            break
        restart = False
        print i

【讨论】:

【参考方案4】:

只需要一个while语句。

while True:
    restart = False
    for i in x:
        if i == 4:
            restart = True
            break
        else:
            print i
    if not restart:
        break

【讨论】:

【参考方案5】:

带有一个while循环:

x=[1,2,3,4,5,6]
i=0
while i<len(x): 
    if x[i] == 4:
        i=0
        continue
    else:
        print x[i]
    i+=1

【讨论】:

【参考方案6】:

我会为此使用递归函数

def fun(x):
    for i in x:
        if i == 4:
            fun(x)
        else:
            print i
    return;

x = [1,2,3,4,5,6]
fun(x)

【讨论】:

您很快就会收到RuntimeError,因为它超出了最大递归限制。默认为1000 作者要重复多少次? 递归函数对于高递归值是危险的,并且很难将退出条件集成到其中。 好的,我同意,我删除帖子比? 你点击删除 @freude

以上是关于如何在 python 中重新启动“for”循环? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始

在python中的for循环中启动多进程池

批处理文件 FOR 循环改进

如何重置对象循环“计数器”?

在 C++ 中满足某些条件(如果)后,如何重新启动 while 循环? [关闭]

遍历动态数量的 for 循环(Python)