@Jon Clements が優れた回答を提供してくれました。Python のイディオムを使用して問題を解決する方法です。他の Python プログラマーが彼のコードを見れば、すぐに理解できるでしょう。これは、Python を使用して行う正しい方法です。
実際の質問に答えるには: いいえ、それは機能しません。三項演算子の形式は次のとおりです。
expr1 if condition else expr2
condition
に評価されるものでなければなりませんbool
。三項式はexpr1
andexpr2
の 1 つを選択し、それだけです。
驚いたような表現を試してみたc += 1 if condition else 0
ところ、うまくいき、この回答の最初のバージョンで指摘しました。@TokenMacGuy は、実際に何が起こっているかを指摘しました。
c += (1 if condition else 0)
したがって、ある種のループの代わりに適切な条件を設定したとしても、実行しようとしていたことを実行することはできません。上記のケースは機能しますが、次のようなものは失敗します。
c += 1 if condition else x += 2 # syntax error on x += 2
これは、Python が代入ステートメントを式と見なさないためです。
次のよくある間違いを犯すことはできません。
if x = 3: # syntax error! Cannot put assignment statement here
print("x: {}".format(x))
ここでプログラマーはおそらくx == 3
値をテストしたかったのですが、 と入力しましたx = 3
。Python は、代入を式と見なさないことで、この間違いを防ぎます。
間違えてもいけませんし、わざとやってもいけません。