如何在迭代中更改python迭代器?
例如:
for i in range(10):
print i
i = 5
打印:
0
1
...
9
我想打印:
0
5
5
5
...
编辑:抱歉,这个问题让人感到困惑。我感兴趣的是为什么当我尝试在for循环期间更改迭代器时,for循环在下一次迭代时忽略它。
其他人已经提交了一个清除我的困惑的答案。 range创建一个列表,然后for循环将迭代器分配给列表中的下一个变量。
答案 0 :(得分:1)
根据您的回复,您尝试执行的操作已经以continue
的形式存在。它允许您通过检查某个条件保持跳过迭代:
for i in range(10):
if i >= 5:
continue # go to next iteration
print i
假设您使用的是迭代器而不是列表,则可以一次跳过一个元素,因此跳转到给定索引是无关紧要的。
答案 1 :(得分:0)
for循环遍历由range创建的列表中的每个数字。您可以为给定的迭代更改i,但for循环只会转到列表中的下一个数字。我认为while循环将是一个不同的故事,它实际上使用了i的当前值
答案 2 :(得分:0)
要回复Cody Braun,请参阅以下代码和输出:
for i in range(10):
if i >= 5:
i = 5
print i
输出:
0
1
2
3
4
5
5
5
5
5
答案 3 :(得分:0)
你可以创建一个可迭代的类并修改for循环中的迭代:
>>> class MyRange:
... def __init__(self, stop):
... self.current = 0
... self.stop = stop
... def __iter__(self):
... return self
... def next(self): # Python 3: def __next__(self)
... if self.current >= self.stop:
... raise StopIteration
... else:
... self.current += 1
... return self.current - 1
...
>>> for i in MyRange(3):
... print i
...
0
1
2
>>> r = MyRange(10)
>>> for i in r:
... print i
... r.current += 1
...
0
2
4
6
8
>>> r = MyRange(10)
>>> for i in r:
... print i
... r.current = 5
0
5
5
5
5
5
# and so on...