Python 如果满足条件,则获取for循环以重新启动

Python 如果满足条件,则获取for循环以重新启动,python,for-loop,Python,For Loop,有没有办法让for循环在循环中的任意点重新开始?假设这条线的长度是三。如果满足If语句并且我的索引递增,我希望所有内容都在第行的第一个值处再次开始检查。 (请注意,整个过程是while-True循环的一部分) 我认为您需要另一个,而在for循环上方为True。 例如,这是一个连续循环,除非存在中断条件 x = [1, 2, 3, 4, 5, 6] restart = True while restart: for i in x: # add any exit condit

有没有办法让for循环在循环中的任意点重新开始?假设这条线的长度是三。如果满足If语句并且我的索引递增,我希望所有内容都在第行的第一个值处再次开始检查。 (请注意,整个过程是while-True循环的一部分)


我认为您需要另一个
,而在
for循环
上方为True
。 例如,这是一个连续循环,除非存在中断条件

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 == value:  # add your message condition
           break
您可以将
x
替换为
library
,将
i
替换为
line
。然后,如果
i==4
添加重置循环的中断条件,并且如果确实存在中断条件,则将
restart
标志设置为
False


另一个选项是使用循环计数器,如
n=2
,在n<2:时使用
,然后在您的条件满足时设置
n+=1
,或者在您想要重置时设置
n=0

我认为您需要在
上方为循环设置另一个
而为True
。 例如,这是一个连续循环,除非存在中断条件

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 == value:  # add your message condition
           break
您可以将
x
替换为
library
,将
i
替换为
line
。然后,如果
i==4
添加重置循环的中断条件,并且如果确实存在中断条件,则将
restart
标志设置为
False


另一个选项是使用循环计数器,如
n=2
,在n<2:
时使用
,然后在条件满足时设置
n+=1
,或者在需要重置时设置
n=0

如果我读对了,则在找到匹配项时,您希望完全重新启动循环。要做到这一点,最简单的方法是打破for循环,正如您所说,在它上面有一个while循环,该循环保持为True,并将重新启动for循环:

for line in library:
        if message[index:index + len(line)-2] == line[2:]:
            ans += line[0]
            index += len(line)-2 + 1
            break

如果我读对了,当找到匹配项时,您希望完全重新启动循环。要做到这一点,最简单的方法是打破for循环,正如您所说,在它上面有一个while循环,该循环保持为True,并将重新启动for循环:

for line in library:
        if message[index:index + len(line)-2] == line[2:]:
            ans += line[0]
            index += len(line)-2 + 1
            break

我不明白你们在问什么…@Arman所以这行包含了我想在消息中逐个检查的值。目前,当我找到一个匹配项并增加索引以查看下一个位是否在行中也有匹配项时,它只从行的下一个元素开始(并跳过第一个位)。所以即使有比赛,我也不会得到。我想知道我是否可以在索引增量后重新启动for循环到行的第一个元素?有很多方法可以做到这一点,看看这些方法:我不明白你在这里问什么…@Arman所以行中包含我想在消息中逐子字符串检查的值。目前,当我找到一个匹配项并增加索引以查看下一个位是否在行中也有匹配项时,它只从行的下一个元素开始(并跳过第一个位)。所以即使有比赛,我也不会得到。我想知道是否可以在索引增量之后重新启动for循环到行的第一个元素?有很多方法可以做到这一点,看看这些:你需要一个StopIteration捕捉,否则它会在列表结束后重新启动,你也需要一个StopIteration捕捉,否则它会在列表结束后重新启动,我如何才能完全脱离?是的,我对所有这些都有一个while循环,但我想在下面有更多的代码。当我现在中断时,我只是离开for循环,但是中断将我带回for循环。我如何留出时间和时间来获得下一段代码?谢谢:)更新:我知道了:)制作了一个等于一个单词的字符串,然后检查这个单词是否等于这个单词,然后从中跳出。谢谢大家!xx@K.Carpenter很高兴听到!尽管如此,如果您只想在到达for循环(包括重新启动)末尾时退出while循环,您可以在for循环的缩进中添加else语句,将while循环条件设置为False。当for循环结束时,将达到此else语句。如何完全中断?是的,我对所有这些都有一个while循环,但我想在下面有更多的代码。当我现在中断时,我只是离开for循环,但是中断将我带回for循环。我如何留出时间和时间来获得下一段代码?谢谢:)更新:我知道了:)制作了一个等于一个单词的字符串,然后检查这个单词是否等于这个单词,然后从中跳出。谢谢大家!xx@K.Carpenter很高兴听到!尽管如此,如果您只想在到达for循环(包括重新启动)末尾时退出while循环,您可以在for循环的缩进中添加else语句,将while循环条件设置为False。for循环结束时将到达此else语句。