所以我写了一个这样的for循环:
for i in range(size):
if(.....)
....
i-=1
else:
....
Run Code Online (Sandbox Code Playgroud)
如果它在if语句中,我尝试将索引减少1 ,但显然我不能这样做.有没有其他方法可以减少ifor循环?
Dra*_*hix 10
我想通过这里提供的文档再次讨论range()函数:Python 3.4.1范围的文档(start,stop [,step])
如上面的文档所示,您可以为范围函数'start','stop'和'step'输入三个参数,最后它将为您提供一个不可变的序列.
'start'参数定义何时应该从你的情况'i'的计数器变量开始.'end'参数基本上就是size参数在你的情况下的作用.至于你想要什么,因为你希望每个循环减少变量'i'1,你可以让参数'step'为-1,这表示在for循环的每次迭代中,变量'i'将下降1.
您可以将'step'设置为-2或-4,这将使for循环计数'i'分别在每个增量2减少或减少4减少.
例:
for x in range(9, 3, -3):
print(x)
Run Code Online (Sandbox Code Playgroud)
打印出来:9,6.它从9开始,到3结束,然后由3的计数器降低.当它达到3时,它将停止,因此为什么'3'本身不打印.
编辑:刚刚注意到你可能想要减少for循环中'i'值的事实......?我会为此做的只是有一个while循环而不是你将有一个暴露的变量,你可以随心所欲地修改.
test = 0
size = 50
while (test < size)
test += 1
if (some condition):
test -= 1
Run Code Online (Sandbox Code Playgroud)
对于这样的构造,您需要改变循环索引,for循环可能不是最佳选择。
for <var> in <iterable>只是运行循环体,并<var>从iterable. 更改<var>将不会影响随后的迭代。
但是,由于i事先计算出值的序列通常很棘手,因此您可以使用while循环。
i = 0
while i < size:
if condition:
...
i -= 1
else:
...
i += 1
Run Code Online (Sandbox Code Playgroud)