Why does:
for i in range(10):
i += 1
print(i)
return:
1
2
3
4
5
6
7
8
9
10
instead of:
2
4
6
8
10
?
Here would be some details if any more were necessary.
for i in range(10):
i += 1
print(i)
is equivalent to
iterator = iter(range(10))
try:
while True:
i = next(iterator)
i += 1
print(i)
except StopIteration:
pass
The iterator
that iter(range(10))
produces will yield values 0
, 1
, 2
... 8
and 9
each time next
is called with it, then raise StopIteration
on the 11th call.
Thus, you can see that i
gets overwritten in each iteration with a new value from the range(10)
, and not incremented as one would see in e.g. C-style for
loop.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With