およびまたはPythonでは、Pythonの論理演算子です。それらの使用法はどうですか?
and:
Pythonでは、および/または、予想どおりにブール論理計算を実行しますが、ブール値を返しません。代わりに、実際に比較する値の1つを返します。
コードは次のように表示されます。
' a' and 'b''b''' and 'b''''a' and 'b' and 'c''c'
ブールコンテキストでは、式の値は左から右に計算されます。ブールコンテキストのすべての値がtrueの場合、は最後の値を返します。
ブールコンテキストの値がfalseの場合、最初のfalse値を返します
or:
コードは次のように表示されます。
' a' or 'b''a''' or 'b''b''' or [] or {}{}0 or 'a' or 'c''a'
またはを使用する場合、値は、およびと同様に、ブールコンテキストで左から右に計算されます。値がtrueの場合、またはその値をすぐに返す場合
すべての値がfalseの場合、または最後のfalse値を返す場合
またはブールコンテキストでは、最初の真の値が見つかるまで式の計算を実行し続け、その後、残りの比較値は無視されることに注意してください
and-or:
および-または前の2つの文法を組み合わせて、推測するだけです。
a='first'
b='second'1 and a or b 'first'(1 and a) or b 'first'0 and a or b 'second'(0 and a) or b 'second'
この構文は、C言語のbool?A:b式に似ています。式全体が左から右に計算されるため、and式の計算が最初に実行されます。 1と「first」の計算値は「first」であり、「first」または「second」の計算値は「first」です。
0 「first」はFalseとして計算され、次に0または「second」は「second」として計算されます。
および-または主に3値演算子bool?a:bを模倣するために使用されます。つまり、式boolがtrueの場合、aを取り、それ以外の場合はbを取ります。
and-orテクニック、boolおよびaまたはb式は、ブールコンテキストのaの値が偽の場合、C言語式boolのようには機能しませんか?a:b。
および-または安全に使用する
コードは次のように表示されます。
a=""
b="second"(1 and [a] or [b])[''](1 and [a] or [b])[0]''
[a]は空でないリストであるため、偽になることはありません。 aが0または "または他の偽の値であっても、リスト[a]は1つの要素を持っているため、真です。
責任あるプログラマーは、and-orテクニックを関数にカプセル化する必要があります。
コードは次のように表示されます。
def choose(bool,a,b):return(bool and [a] or [b])[0]
print choose(1,'','second')
#''
補足例:
a ='first'
b ='second'
1 and a or b #boolに相当=trueの場合
' first'
0 and a or b #boolに相当=falseの場合
' second'
a =''
1 and a or b #aが偽の場合、問題があります
' second'(1and[a]or[b])[0]#安全な使用法[a]偽ることは不可能、少なくとも1つの要素
''
これまでのところ、Pythonでand and orを使用する方法に関するこの記事は、ここで紹介されています。Pythonでand and orの関連する使用例については、ZaLou.Cnを検索してください。
Recommended Posts