所以我写了一个类似这样的for循环:
for i in range(size):
if(.....)
....
i-=1
else:
....
如果它在if
语句内,我尝试将索引减1,但显然我不能这样做。有其他方法可以在for循环中减少i
吗?
所以我写了一个类似这样的for循环:
for i in range(size):
if(.....)
....
i-=1
else:
....
如果它在if
语句内,我尝试将索引减1,但显然我不能这样做。有其他方法可以在for循环中减少i
吗?
我想再次通过此处提供的文档:Python 3.4.1 range(start, stop[, step]) 函数文档,来更详细地介绍 range() 函数。
如上述文档所示,您可以为 range() 函数输入三个参数:'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)
输出结果为:9、6。它从9开始,步长为3递减,直到3停止,因此“3”本身不会被打印。
编辑:刚刚注意到似乎您想在for循环中减少“i”值…?那么我会用while循环代替,在其中暴露一个可以随意修改的变量。
test = 0
size = 50
while (test < size)
test += 1
if (some condition):
test -= 1
for
循环可能不是最好的选择。
for <var> in <iterable>
仅使用 <var>
从 iterable
中获取每个可用值运行循环体。改变 <var>
不会影响随后的迭代。i
,因此可以使用while
循环。i = 0
while i < size:
if condition:
...
i -= 1
else:
...
i += 1
在for循环中使用递减运算符的方法是
for i in range(5,1,-1): print(i)
它将递减一个单位并打印出5432
for increment index last parameter should be in positive
for decrement index last parameter should be in negative
for i in range(size):
是有点特殊的。相反,你应该使用列表推导式:size_range = [x-1 if condition else x for x in range(size)]
实际上可能更好:
def f(x):
... #Do else stuff here.
decrement = lambda x: x-1
size_range = [decrement(x) if condition else f(x) for x in range(size)]
i
,因为当你尝试减少i
时,range()
会增加它,导致程序永远运行下去。 - ForceBrurange()
的工作方式。range()
仅仅创建一个列表,而for <var> in <iterable>
结构运行循环,将<var>
分配给<iterable>
中的每个值。如果在循环内部更改<var>
,它对下一次迭代没有影响。 - musically_utwhile
循环更适合你的用例。 - musically_ut