web-dev-qa-db-ja.com

合格し、pythonで続行する場合

If passとif continueの違いを伝えるために誰かが次の答えを投稿したのを見ました。 「a」リストが[0,1,2]であることを知っていますが、「if not element」の結果が何なのかわかりません。 continueを使用するときに0が印刷されず、1と2だけが印刷されるのはなぜですか? a = 0、「if not element」が「if not 0」の場合、特別な意味がありますか?

>>> 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
15
Shelly

'0'は条件のために出力されません"if not element:"

要素がNone、False、空のstring( '')または0の場合、ループは次の反復で続行されます。

10
Anoop

continueを使用して、for loopの次の繰り返しを渡します
passを使用しても何も起こりません
そのため、continueを使用する場合、printは発生しません(コードは次の反復に続くため)
そしてpassを使用すると、ifを平和的に終了し(実際には何もせず)、printも同様に実行します。

7
Neo

From: https://docs.python.org/2/tutorial/controlflow.html#pass-statements

Passステートメントは何もしません。ステートメントが構文的に必要であるが、プログラムがアクションを必要としない場合に使用できます。

上記のコードスニペットでは、if not elementelement = 0のときにtrueに評価されます。 In python 0はブールfalseと同じです。最初のループではpassは何もしないため、3つの要素すべてを出力します。2番目のループでは、continueは停止しますその反復のループの残りの実行。したがって、printステートメントは実行されないため、1と2のみを出力します。

4
WreckeR
if not element:

両方の例で、これは0とのみ一致します。

pass

これはnothingを行います。そのため、次のコマンドprint elementが実行されます。

continue

これにより、Pythonループサイクルでこれを停止し、ループの次のサイクルにスキップするように指示されます。したがって、print elementに到達することはありません。 1そして上から始めます。

3
C14L

continueは、反復の最も内側の本体をエスケープするために使用される制御フローステートメントです。コードがヒットしたとき

if not element

インタプリタはto trueを検証しない要素のすべての値をスキップします。 0はそのような値の1つであり、continueステートメントに遭遇しない場合はループの次の反復にスキップするため、要素1の値を出力し、その後2を出力します

対照的に、passステートメントは何もせずにスキップし、実行するコードの次の行に戻ります。

1
Spade

Pythonのpasscontinueには根本的な違いがあります。 passは単に何もしませんが、continueはforループの次の反復にジャンプします。ステートメントif not 0は常にTrueに評価されるため、passcontinueステートメントの両方が実行されます。 passは何もせずに値を出力しますが、continueは次のprintステートメントを無視して次の反復にスキップします。

0
Vedang Mehta