Python、なぜi = + 1が無限ループにならないのですか?

ルイーズ

それで先日、タイプミスのために問題に悩まされました。ネストされたループをi + = 1で繰り返す代わりに、i = +1を使用していました。ステップ数の印刷を開始し、ステップ1が連続して印刷されていることを確認するまで、これに気づきませんでした。したがって、私が得ていたプロットは意味がありませんでした。

しかし、私が理解していないのは、なぜプロットがまったく得られず、コードが無限ループに陥っていなかったのかということです。また、ステップ数の途中でしかデータを計算していないはずだったので、どうやってデータがあったのか全くわかりません。または、i = + 1は他の何かを意味しますか?i = +1に関する情報がオンラインでまったく見つからないようです

元のコードの要約版は次のとおりです。

for temp in np.linspace(1.0,4.0,num=100):   
    energyarray = []
    for step in np.arange(0, sw*2):    
        for i in range(n-1):
           for j in range(n-1):

            H_old = -J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])
            H_new = J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])   
            del_H = H_old-H_new
            if del_H >= 0:
                matrix[i,j] = -matrix[i,j]
            elif del_H < 0:
                    prob = np.exp((del_H)/(temp))   
                    rand = random.random()
                    if rand < prob:
                        matrix[i,j] = -matrix[i,j]
                    else:
                        matrix[i,j] = matrix[i,j]  

        if step >= (sw):

            Ene = EnergyCal(matrix)
            energyarray.append(Ene)


        step =+ 1 


    energy_sum = []
    energy_sum = sum(energyarray)


    plt.figure(10)
    plt.plot(temp, energy_sum, 'ro')


plt.show()
juanpa.arrivillaga

Pythonのforループは、イテレータベースの「for-each」ループです。反復変数は、各反復の開始時に再割り当てされます。つまり、次のループがあります。

In [15]: nums = 1,2,5,8

In [16]: for num in nums:
    ...:     print(num)
    ...:
1
2
5
8

と同等です:

In [17]: it = iter(nums)
    ...: while True:
    ...:     try:
    ...:         num = next(it)
    ...:     except StopIteration:
    ...:         break
    ...:     print(num)
    ...:
1
2
5
8

同様に、次のループは同等です。

In [19]: for num in nums:
    ...:     print("num:", num)
    ...:     num += 1
    ...:     print("num + 1:", num)
    ...:
    ...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9

In [20]: it = iter(nums)
    ...: while True:
    ...:     try:
    ...:         num = next(it)
    ...:     except StopIteration:
    ...:         break
    ...:     print("num:", num)
    ...:     num += 1
    ...:     print("num + 1:", num)
    ...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9

CスタイルのforループはPythonには存在しませんが、いつでもwhileループを記述できます(cスタイルのforループは、本質的にwhileループの構文糖衣です)。

for(int i = 0; i < n; i++){
    // do stuff
}

と同等です:

i = 0
while i < n:
    # do stuff
    i += 1

違いは、この場合、反復はに依存しi# do stuff変更iするものはすべて反復に影響を与えるのに対し、前者の場合、反復はイテレータに依存することに注意してくださいイテレータを変更すると、反復が影響を受けることに注意してください。

In [25]: it = iter(nums) # give us an iterator
    ...: for num in it:
    ...:     print(num)
    ...:     junk = next(it) # modifying the iterator by taking next value
    ...:
    ...:
1
5

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜこれが無限ループに陥らないのですか?

分類Dev

このソリューションが無限ループに陥らないのはなぜですか?

分類Dev

Pythonの印刷ステートメントが無限ループの上にないのはなぜですか?

分類Dev

なぜこのプロローグルールは無限ループに入らないのですか?

分類Dev

「無限」のforループが処理されないのはなぜですか?

分類Dev

なぜこれが無限ループなのですか?

分類Dev

無限ループがPromelaとSpinでのモデル検査でエラーにならないのはなぜですか?

分類Dev

基本的な再帰が無限にループするのはなぜですか?

分類Dev

なぜこれが無限ループになるのですか?

分類Dev

なぜこれが無限ループ[SICP]になるのですか?

分類Dev

find exec grep> fileが無限ループになるのはなぜですか?

分類Dev

while(1 <a <5)が無限ループであるのはなぜですか?

分類Dev

この場合、useEffectが無限ループにヒットしないのはなぜですか?

分類Dev

リダイレクトによって無限ループが発生しないのはなぜですか?

分類Dev

自分自身を(再帰的に)呼び出すメンバーメソッドが無限ループに入らないのはなぜですか?

分類Dev

Pythonの無限ループ-なぜですか?

分類Dev

このjavascriptループが無限に戻るのはなぜですか?

分類Dev

なぜこれが無限にループするのですか?

分類Dev

無限のwhileループから抜け出す、なぜこのコードが機能しないのか

分類Dev

無限のwhileループ内から呼び出されたときにsetTimeoutが呼び出されないのはなぜですか

分類Dev

while [0]が無限ループに入るのはなぜですか?

分類Dev

なぜこれが無限ループに陥るのですか?

分類Dev

Pythonでgetattrメソッドをオーバーライドしているときに無限ループがないのはなぜですか

分類Dev

ToList()を追加しない限り、foreachでLinqグループ選択に加えられた変更が無視されるのはなぜですか?

分類Dev

リーダーが無限ループに陥っているのはなぜですか

分類Dev

Elm REPLの無限ループでDebug.logから出力を取得しないのはなぜですか?

分類Dev

二分探索で、ループが無限ループになるのはなぜですか?

分類Dev

これがwhileループで無限ループになるのはなぜですか?

分類Dev

ここでforループが無限ループになるのはなぜですか?

Related 関連記事

  1. 1

    なぜこれが無限ループに陥らないのですか?

  2. 2

    このソリューションが無限ループに陥らないのはなぜですか?

  3. 3

    Pythonの印刷ステートメントが無限ループの上にないのはなぜですか?

  4. 4

    なぜこのプロローグルールは無限ループに入らないのですか?

  5. 5

    「無限」のforループが処理されないのはなぜですか?

  6. 6

    なぜこれが無限ループなのですか?

  7. 7

    無限ループがPromelaとSpinでのモデル検査でエラーにならないのはなぜですか?

  8. 8

    基本的な再帰が無限にループするのはなぜですか?

  9. 9

    なぜこれが無限ループになるのですか?

  10. 10

    なぜこれが無限ループ[SICP]になるのですか?

  11. 11

    find exec grep> fileが無限ループになるのはなぜですか?

  12. 12

    while(1 <a <5)が無限ループであるのはなぜですか?

  13. 13

    この場合、useEffectが無限ループにヒットしないのはなぜですか?

  14. 14

    リダイレクトによって無限ループが発生しないのはなぜですか?

  15. 15

    自分自身を(再帰的に)呼び出すメンバーメソッドが無限ループに入らないのはなぜですか?

  16. 16

    Pythonの無限ループ-なぜですか?

  17. 17

    このjavascriptループが無限に戻るのはなぜですか?

  18. 18

    なぜこれが無限にループするのですか?

  19. 19

    無限のwhileループから抜け出す、なぜこのコードが機能しないのか

  20. 20

    無限のwhileループ内から呼び出されたときにsetTimeoutが呼び出されないのはなぜですか

  21. 21

    while [0]が無限ループに入るのはなぜですか?

  22. 22

    なぜこれが無限ループに陥るのですか?

  23. 23

    Pythonでgetattrメソッドをオーバーライドしているときに無限ループがないのはなぜですか

  24. 24

    ToList()を追加しない限り、foreachでLinqグループ選択に加えられた変更が無視されるのはなぜですか?

  25. 25

    リーダーが無限ループに陥っているのはなぜですか

  26. 26

    Elm REPLの無限ループでDebug.logから出力を取得しないのはなぜですか?

  27. 27

    二分探索で、ループが無限ループになるのはなぜですか?

  28. 28

    これがwhileループで無限ループになるのはなぜですか?

  29. 29

    ここでforループが無限ループになるのはなぜですか?

ホットタグ

アーカイブ