【Python】forループでインデックス変数を変更するのは、現在のループにのみ有効です


(1)ゆがみを正す
偶然forサイクルで同じカウント変数を用いたが,結果は歪んでいた.なぜなら、操作はサブカウント変数の前に置かれるからです.次のようになります.
>>> for i in range(20):
...     print(i)
...     for i in range(5):
...       i+=100
...
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

これは、pythonでは、1つのforループが反復のたびにlist/iterableの次の要素をインデックス変数に割り当てるためです.これは、ループで何をしても、次の要素がiに再割り当てされることを意味します. 
簡単に言えば、forループでインデックス変数を変更すると、現在のループにのみ有効になり、次のループでは索隠変数に値が再割り当てされます.
(2)歪打ちが正しかった
サブカウント変数に操作を置くと、カウント変数の値が変更されるにつれてエラーが発生します.次のようになります.
>>> for i in range(20):
...     for i in range(5):
...        i+=100
...     print(i)
...
104
104
104
104
104
104
104
104
104
104
104
104
104
104
104
104
104
104
104

(3)python 3のピット:インデックス変数の漏洩
printを2つのループの外部に置くと、iの最終値104が印刷され、forループ内のインデックス変数がループの外部に漏れることを示す.これは非常に隠れたバグをもたらします.
より複雑なシナリオ:https://blog.csdn.net/wuhui_gdnt/article/details/88344553