为什么这样做:
for i in range(10):
i += 1
print(i)
返回:
1
2
3
4
5
6
7
8
9
10
代替:
2
4
6
8
10
?
如果需要更多详细信息,请参见此处。
答案 0 :(得分:9)
for i in range(10):
i += 1
print(i)
等同于
iterator = iter(range(10))
try:
while True:
i = next(iterator)
i += 1
print(i)
except StopIteration:
pass
iterator
产生的iter(range(10))
将产生值0
,1
,2
... 8
和9
每次调用next
时,在第11次通话中加注StopIteration
。
因此,您可以看到i
在每次迭代中都被range(10)
中的新值覆盖,并且没有增加,例如C样式的for
循环。
答案 1 :(得分:2)
您应该使用自己范围内的步骤:
for i in range(2,11,2):
print(i)
输出:
2
4
6
8
10
答案 2 :(得分:2)
i
在每次循环迭代时分配,覆盖对其值所做的任何更改。
for i in range(10):
i += 1
print(i)
等效于:
i = 0 # first iiteration
i += 1
print(i)
i = 1 # second iiteration
i += 1
print(i)
i = 2 # third iiteration
i += 1
print(i)
# etc up to i = 9