Python if-else 省略形 [重複] 質問する

Python if-else 省略形 [重複] 質問する

次のようなコードがあるとします:

if A[i] > B[j]:
    x = A[i]
    i += 1
else:
    x = B[j]
    j += 1

もっと簡単に書く方法はありますか? Python にはこれに似た構文がありますか?

x = (A[i] > B[j]) ? A[i] : B[j]
((A[i] > B[j]) ? i : j) += 1

ベストアンサー1

最も読みやすい方法は

x = 10 if a > b else 11

andただし、およびも使用できますor

x = a > b and 10 or 11

ただし、「Zen of Python」では「読みやすさが重要」とされているので、最初の方法を採用してください。

また、 の代わりに変数を置くと10、 と評価され、 and-or トリックは失敗しますFalse

ただし、割り当て以上のものがこの条件に依存する場合は、次のように記述した方が読みやすくなります。

if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1

コンテナに入れない限りはijしかし、なぜそれが必要なのかを説明すれば、必要ではないことが判明する可能性もあります。

おすすめ記事