Python 一旦满足条件,就从头开始迭代
我有以下代码:Python 一旦满足条件,就从头开始迭代,python,Python,我有以下代码: letters = 'abcdefg' for i in letters: if ... #condition that tests something I need #once condition is satisfied, something is done, the condition is modified # and letters becomes: letters
letters = 'abcdefg'
for i in letters:
if ...
#condition that tests something I need
#once condition is satisfied, something is done, the condition is modified
# and letters becomes:
letters = letters.replace(i,'')
### Now I want to start this for loop again because my condition
### may now be met with the initial letters
如何让循环从头开始?类似的操作可能会满足您的需要:
while letters and not breakCondition:
for i in letters:
if someLogic():
letters = letters.replace(i, '')
break
您可以尝试以下方法(根据需要调整以适合您的代码):
i=0
而我(信):
如果。。。。
字母=字母。替换(字母[i],'')#可能是你想要的
i=0
其他:
i+=1
循环中的迭代由i
的值控制。只要i
小于字符串(7)的长度,它将保持循环,每次增加循环中i
的值(用作计数器)。当您设置i=0
时,您正在(重新)启动计数器
请注意,
i
是一个简单的计数器,因此要访问给定的字母,必须对其进行索引。也就是说,字母[I]
你的意思是重新启动“循环”而不是功能吗?对不起,是的,我的意思是重新启动循环,我将编辑标题。你所说的条件被修改是什么意思?
在循环过程中不要试图修改iterable。它不应该在这里做坏事,因为你不是在一个可变序列上迭代。。。但它可能做不到你想要的。它当然不会改变你正在迭代的序列。a是我函数中的一个变量。我在另一个变量上测试变量abcdefg,我们称之为“Y”。一旦abcde或f为真,该变量将添加到变量Y中,这意味着我需要重新测试初始变量,看看它们现在是否满足新变量的条件。完美。真不敢相信这是如此容易等待8分钟让我接受…我有一个关于你的代码的问题,输入I=0,这会使迭代重新开始吗?好的,你的代码的问题是它不再从一开始就开始了,这是我一直在寻找的我不确定我是否理解,它确实是从头开始的。你能解释一下为什么你不这么认为吗?从我看到的代码来看,它基本上允许迭代继续。例如,如果'c'满足条件,字母现在将是'abdefg',您的代码将在'defgab'上运行……这没关系,它仍然可以完成我需要代码做的事情,只是认为如果我需要它从头开始,它就不会
i = 0
while i < len(letters):
if ....
letters = letters.replace(letters[i], '') # probably what you want
i = 0
else:
i += 1