3

Pythonの反復プロセスについて混乱しています

私は持っている:

numbers = [0,1,2,3,4,5]
for i in numbers:
    v = numbers
    print v

これがループの終わりですが、 C 、 C++ 、 Java では、ループ内の行が{ }繰り返し実行されるか、中括弧が指定されていない場合はループの次のステートメントが実行されることがわかっていますが、ここで混乱しています。反復で実行される行数は? インデントに依存しますか?

4

4 に答える 4

6

Python では、括弧ではなくインデントがブロック スコープを決定するため、この例では、インデントされた両方の行がループの反復ごとに 1 回実行されます。

これは、C/Java 言語ファミリーから来たプログラマーにとって Python の最も奇妙な点の 1 つですが、すぐに慣れることができます。

于 2013-03-27T19:42:04.310 に答える
4

Python はインデントを使用してコードのブロックを区切ります。この特定のコードを次のように考えてみてください。

numbers = [0,1,2,3,4,5]
for i in numbers:  #{
    v = numbers
    print v
#}

これは完全に有効な Python コードであり、いくつかの異なる言語で期待される場所に中括弧付きのコメントがあります。

単一ステートメントの実行に対応する Python は次のとおりです。

numbers = [0,1,2,3,4,5]
for i in numbers: v = numbers
print v

すべてのループは実行のみですv = numbers(;ただし、を使用すると、同じ行にステートメントを追加できます)。

于 2013-03-27T19:42:53.313 に答える
1

Python では、インデントが非常に重要です。コードでは、これらの行は両方とも for ループの各反復で実行されます。

   v = numbers
   print v
于 2013-03-27T19:42:23.047 に答える
1

追加のメモとして、元のコードは、あなたがやりたいと思っていることをしていないと思います-それは、数字1〜5を独自の行に出力することです。次のようになります (Python 3 を使用):

numbers = [0,1,2,3,4,5]
for i in numbers:
    print(i)

次のコードを実行すると:

numbers = [0,1,2,3,4,5]
v = numbers
print(v)

あなたが得るでしょう:

[0, 1, 2, 3, 4, 5]
于 2013-03-27T19:58:13.640 に答える