Pythonのandとor


pythonのandとorの実行結果を初めて見たときは驚き、「どうしてこんなことになったの?」と驚き、考えてみれば悪くない
and
pythonのand演算は、最初が偽の値を返し、すべてが真であれば最後の値を返します.次に例を示します.
>>> a = 1
>>> b = []
>>> c = '123'
>>> d = {'name':'an'}
>>> a and c and d#           
{'name': 'an'}
>>>
>>> a and b and c and d#          
[]
>>>

or
pythonのro演算は、最初が真の値を返し、すべてが偽の場合は最後の値を返します.次に例を示します.
>>> a = 1
>>> b = []
>>> c = '123'
>>> d = {'name':'an'}
>>> e = None
>>> b or e or a or c#          
1
>>>
>>> e or b#        
[]
>>>

疑問符式
以前から使っていたC/C++は、pythonを使い始めたばかりの頃は慣れていませんでした.例えば、pythonにはswitchがありませんでした.case文、pythonには疑問符式がありません.pythonの疑問符式はand、or、[]/()の組み合わせで実現できます.以下のようにします.
>>> a = 1
>>> (a > 0) and '+' or '-'
'+'
>>>

まず(a>0)はTrueを返し、さらに'+'とand演算を行い、両方とも真であり、最後の値('+')を返し、さらに'-'とor演算を行い、1番目が真の値('+')を返します.2番目を返す場合を見てください.
>>> a = -1
>>> (a > 0) and '+' or '-'
'-'
>>>

andとorの間の要素が論理的に偽物である場合、orの後ろの式に戻ることに気づいたかもしれません.ここでは、[False]または(False,)が本物の特性で上記の疑問符式を(expression and[ValueWhileTrue]or[ValueWhileFalse])[0]または(expression and(ValueWhileTrue,)or(ValueWhileFalse,)[0]に書き換える必要があります.
>>> a = 0
>>> (a == 0) and '' or 'not zero'
'not zero'#       ,       
>>>

上の方法で書き直して、仕事は正しいです.
>>> a = 0
>>> ((a == 0) and [''] or ['not zero'])[0]
''
>>> a = 0
>>> ((a == 0) and ('',) or ('not zero',))[0]
''
>>>

もちろん、コードが最も重要なのは可読性なので、それでも「かっこいい」ことをお勧めしません.