web-dev-qa-db-ja.com

Pythonのforループで「continue」と「pass」に違いはありますか?

例のように2つのPythonキーワードcontinuepassの間に大きな違いはありますか

for element in some_list:
    if not element:
        pass

そして

for element in some_list:
    if not element:
        continue

知っておくべきですか?

222
Aufwind

はい、彼らは全く異なることをします。 passは単純に何もしませんが、continueは次のループの繰り返しを続けます。あなたの例では、ifの後に別のステートメントを追加すると違いが明らかになります。passを実行した後、このステートメントがさらに実行されます。 continueの後は、そうではありません。

>>> a = [0, 1, 2]
>>> for element in a:
...     if not element:
...         pass
...     print element
... 
0
1
2
>>> for element in a:
...     if not element:
...         continue
...     print element
... 
1
2
320
Sven Marnach

はい、違いがあります。 continueは次の反復でループを強制的に開始しますが、passは「ここで実行するコードはありません」という意味で、残りまたはループ本体まで続きます。

これらを実行して、違いを確認してください。

for element in some_list:
    if not element:
        pass
    print 1 # will print after pass

for element in some_list:
   if not element:
       continue
   print 1 # will not print after continue
61
user130076

continueはループの先頭に戻ります。 passは処理を続行します。

パスがループの最後にある場合、フローはループの先頭に戻るため、違いは無視できます。

17
tMC

この例では、ループの最後に両方のステートメントが表示されるため、違いはありません。 passは単なるプレースホルダーであり、何も実行しません(次のステートメントにpasses実行)。一方、continueには明確な目的があります。ループにcontinueを再起動したかのように伝えます。

for element in some_list:
    if not element:
        pass
    print element  

とは非常に異なります

for element in some_list:
    if not element:
        continue
    print element
8

はい、違いがあります。 Continueは、実際にループの現在の反復の残りをスキップします(先頭に戻ります)。 Passは何もしない空のステートメントです。

python docs を参照してください

4
froadie

それらの間には違いがあり、
continueは、ループの現在の反復をスキップして、次の反復を実行します。
passは何もしません。空のステートメントプレースホルダーです。
例を挙げて、これをより明確にしたいと思います。

>>> for element in some_list:
...     if element == 1:
...         print "Pass executed"
...         pass
...     print element
... 
0
Pass executed
1
2

>>> for element in some_list:
...     if element == 1:
...         print "Continue executed"
...         continue
...     print element
... 
0
Continue executed
2
3
Walk

それらの例では、いいえ。ステートメントがnotループの最後の場合、それらはvery異なる効果を持ちます。

x = [1,2,3,4] 
for i in x:
    if i==2:
         pass  #Pass actually does nothing. It continues to execute statements below it.
         print "This statement is from pass."
for i in x:
    if i==2:
         continue #Continue gets back to top of the loop.And statements below continue are executed.
         print "This statement is from continue."

出力は

>>> This statement is from pass.

繰り返しますが、同じコードを少し変更して実行します。

x = [1,2,3,4]
for i in x:
    if i==2:
       pass  #Pass actually does nothing. It continues to execute statements below it.
    print "This statement is from pass."
for i in x:
    if i==2:
        continue #Continue gets back to top of the loop.And statements below continue are executed.
    print "This statement is from continue."

出力は-

>>> This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from continue.
This statement is from continue.
This statement is from continue.

Passは何もしません。計算は影響を受けません。ただし、ループの先頭に戻って次の計算に進みます。

1

このように考えてください:

Pass: Pythonはインデントでのみ動作します!他の言語とは異なり、空の中括弧はありません。

そのため、条件がtrueの場合に何もしない場合は、pass以外のオプションはありません。

Continue:これはループの場合にのみ有用です。ある場合、値の範囲について、その特定のパスでその条件が真になった後にループの残りのステートメントを実行したくない場合は、continueを使用する必要があります。

1
Vaishali