三項演算子

条件式とも呼ばれる3項演算子は、条件が真または偽であることに基づいて何かを評価する演算子です。バージョン2.5でPythonに追加されました。 単一行で条件をテストして複数行のif文を置き換えるだけで、コードをコンパクトにすることができます。 構文:

🐶Pythonコードの例を示すで

# Program to demonstrate conditional operator
a, b = 10, 20

# Copy value of a in min if a < b else copy b
min = a if a < b else b

print(min)

🐶動画で動作確認してみよか?

動画で確認

🐶Pythonコードの例を示すで

# Python program to demonstrate ternary operator
a, b = 10, 20

# Use tuple for selecting an item
print( (b, a) [a < b] )

# Use Dictionary for selecting an item
print({True: a, False: b} [a < b])

# lamda is more efficient than above two methods
# because in lambda  we are assure that
# only one expression will be evaluated unlike in
# tuple and Dictionary
print((lambda: b, lambda: a)[a < b]())

🐶動画で動作確認してみよか?

動画で確認

🐶Pythonコードの例を示すで

# Python program to demonstrate nested ternary operator
a, b = 10, 20

print ("Both a and b are equal" if a == b else "a is greater than b"
        if a > b else "b is greater than a")

🐶動画で動作確認してみよか?

動画で確認

上記のアプローチは次のように書くことができます。

🐶Pythonコードの例を示すで

# Python program to demonstrate nested ternary operator
a, b = 10, 20

if a != b:
    if a > b:
        print("a is greater than b")
    else:
        print("b is greater than a")
else:
    print("Both a and b are equal")

🐶動画で動作確認してみよか?

動画で確認

重要なポイント:

三項演算子が存在しない場合に2.5より前に使用された方法 下記のような式では、インタプリタは式がtrueであればon_trueが評価され、そうでなければon_falseが評価されるかどうかをチェックします。 構文: 例:

🐶Pythonコードの例を示すで

# Program to demonstrate conditional operator
a, b = 10, 20

# If a is less than b, then a is assigned
# else b is assigned (Note : it doesn't  
# work if a is 0.
min = a < b and a or b

print(min)

🐶動画で動作確認してみよか?

動画で確認

注:このメソッドの唯一の欠点は、on_trueがゼロまたはFalseにならないことです。これが発生した場合、on_falseは常に評価されます。その理由は、式が真であれば、インタプリタはon_trueをチェックし、それがゼロまたは偽であれば、式全体の最終結果を得るためにon_falseをチェックするようにインタプリタに強制します。

Last Updated: 5/19/2019, 1:43:17 AM