これは、今日ラムダ式を検討していたときに頭に浮かんだ質問です。ご存知のとおり、C シリーズ言語の三項演算子 (?:) は非常に便利なステートメントです。
C の三項演算子について
式 1?式2:式3
Python で実装する方法については、次の例を参照してください:
答えは次のとおりです: X = (式 1) と式 2 (真の値が返される) または式 3 (偽の値が返される)
例:
このコードの出力は 4 です。式の条件を (y。
この結果が得られる理由:
0、''、[]、()、{}、ブール値コンテキストではどれも false で、それ以外は true です。
Python では、and および or はブール論理演算を実行しますが、ブール値を返すのではなく、実際に比較する値の 1 つを返します。
ブールコンテキスト内のすべての値が true の場合、最後の値を返します。コンテキスト内の値が false の場合、最初の false 値を返します。
値が true の場合、またはその値をすぐに返します。すべての値が false である場合、または最後の false 値を返す場合
上記の背景に基づいて、この式の意味を理解する必要があります。
"注: "この使用法にはいくつかの欠陥があるはずです。式 2 または 3 が、定義された複数の false 値 (0、''、[]、()、{}、None) の 1 つである場合、それは私の提案は、これらの偽の値を文字列の形式で表現し、「」を特別に「」として扱うべきであるということです。後で判断します
Python の威力を改めて知りました。何か洞察があればコメントしてください。
追記:
最近いくつかの記事を読みましたが、マスターがこの問題とこの欠陥に対する完璧な解決策を教えてくれました
X= (式 1) および [式 2 (真の値を返す)] または [式 3 (偽の値を返す)] (注: 式 2 と式 3 は 0、''、[]、()、 {}、なし)
式 2 と 3 を角括弧で囲み、値が false にならないようにします。この解決策は確かに優れています。