【Python】forループでインデックス変数を変更するのは、現在のループにのみ有効です
920 ワード
(1)ゆがみを正す
偶然forサイクルで同じカウント変数を用いたが,結果は歪んでいた.なぜなら、操作はサブカウント変数の前に置かれるからです.次のようになります.
これは、pythonでは、1つのforループが反復のたびにlist/iterableの次の要素をインデックス変数に割り当てるためです.これは、ループで何をしても、次の要素がiに再割り当てされることを意味します.
簡単に言えば、forループでインデックス変数を変更すると、現在のループにのみ有効になり、次のループでは索隠変数に値が再割り当てされます.
(2)歪打ちが正しかった
サブカウント変数に操作を置くと、カウント変数の値が変更されるにつれてエラーが発生します.次のようになります.
(3)python 3のピット:インデックス変数の漏洩
printを2つのループの外部に置くと、iの最終値104が印刷され、forループ内のインデックス変数がループの外部に漏れることを示す.これは非常に隠れたバグをもたらします.
より複雑なシナリオ:https://blog.csdn.net/wuhui_gdnt/article/details/88344553
偶然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