如何在Python中更改for循环的索引?

假设我有一个for循环:


for i in range(1,10):

    if i is 5:

        i = 7

如果要i满足某些条件,我想更改。我试过了,但是没用。我该怎么办?


繁星coding
浏览 1631回答 3
3回答

繁华开满天机

对于您的特定示例,这将起作用:for i in range(1, 10):&nbsp; &nbsp; if i in (5, 6):&nbsp; &nbsp; &nbsp; &nbsp; continue但是,使用while循环可能会更好:i = 1while i < 10:&nbsp; &nbsp; if i == 5:&nbsp; &nbsp; &nbsp; &nbsp; i = 7&nbsp; &nbsp; # other code&nbsp; &nbsp; i += 1甲for环分配一个变量(在这种情况下i/在每次迭代开始时)到下一个元素列表中的迭代。这意味着无论您在循环内做什么,i都将成为下一个元素。该while循环有没有这样的限制。

大话西游666

为什么问题循环无法按预期工作的更多背景知识。一个循环for i in iterable:&nbsp;&nbsp; &nbsp; # some code with i是基本的速记iterator = iter(iterable)while True:&nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; i = next(iterator)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; except StopIteration:&nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; # some code with i因此,for循环从一个由迭代器构成的迭代器中提取值,并自动识别该迭代器何时用尽并停止。正如你所看到的,在每次迭代while循环我被重新分配,因此值i将被覆盖,无论您在发出任何其他的重新分配的# some code with i一部分。因此,forPython中的循环不适合对循环变量进行永久性更改,因此您应该采用while循环,正如Volatility的答案中已经证明的那样。

哆啦的时光机

这个概念在C语言世界中并不罕见,但应尽可能避免。但是,这就是我实施的方式,以一种我清楚知道正在发生的方式。然后,您可以在循环内的任何位置将要向前跳转的逻辑放在索引中,读者会知道要注意skip变量,而很容易错过将i = 7嵌入深处的情况:skip = 0for i in range(1,10):&nbsp; &nbsp;if skip:&nbsp; &nbsp; &nbsp; skip -= 1&nbsp; &nbsp; &nbsp; continue&nbsp; &nbsp;if i=5:&nbsp; &nbsp; &nbsp; skip = 2&nbsp; &nbsp;<other stuff>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python