Python 为什么可以';";我";为循环而在内部操纵

Python 为什么可以';";我";为循环而在内部操纵,python,for-loop,Python,For Loop,为什么: for i in range(10): i += 1 print(i) 返回: 1 2 3 4 5 6 7 8 9 10 而不是: 2 4 6 8 10 2 4 6 8 10 ? 如果需要更多,这里将提供一些详细信息。您应该使用您范围内的步骤: for i in range(2,11,2): print(i) 输出: 相当于 iterator = iter(range(10)) try: while True: i = next(itera

为什么:

for i in range(10):
 i += 1
 print(i)
返回:

1
2
3
4
5
6
7
8
9
10
而不是:

2
4
6
8
10
2
4
6
8
10
?


如果需要更多,这里将提供一些详细信息。

您应该使用您范围内的步骤:

for i in range(2,11,2):
    print(i)
输出:

相当于

iterator = iter(range(10))
try:
    while True:
        i = next(iterator)
        i += 1
        print(i)
except StopIteration:
    pass
iter(范围(10))
产生的
迭代器将产生值
0
1
2
8
9
每次使用它调用
next
,然后在第11次调用时引发
StopIteration


因此,您可以看到,
i
在每次迭代中都会被
范围(10)
中的一个新值覆盖,并且不会像在C-style
for
循环中看到的那样递增。

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
 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