pythonのandとor演算の核となる考え方
——短絡ロジック
最近私はLiao XuefengのPythonチュートリアルを読み始めました、そして私は「Pythonを徹底的に学ぶ」を入れるつもりでした最後の数章は少し難しく感じられるので、最初に「方法」から始めてください (OK、私は弱すぎますが、ゆっくりと一歩ずつ進めてください)。Liao Xuefeng のチュートリアルを読んだ後に振り返ってみると、私はそうかもしれないと思いました。いくつかのアイデアを得ることができます。
さて、今日これを書いた理由は、Liao Xuefeng のチュートリアルのフィルターの章に登場したためで、これは少し混乱していました。最初に読んだところ、コードは次のとおりです。
#把一个序列中的空字符串删掉 1> def not_empty(s): 2> return s and s.strip() 3> 4> filter(not_empty, ['A', '', 'B', None, 'C', ' '])
その後、 および / または に関する動作ロジックをいくつか確認し、私なりの理解を加えて次のようにまとめました(かどうかはわかりません)間違いがあります。漏れがあれば修正してください):
1 . 論理演算子が含まれています まず、Python のどのオブジェクトが False として扱われるかということから始めましょう。そしてどれが真実なのでしょうか?
**Python では、任意の数値型の None、0、空の文字列 ""、空のタプル ()、空のリスト []、空の辞書 {} は、カスタム型と同様に False として扱われます。 ) または
len () メソッドが実装されており、メソッドは 0 または False を返し、そのインスタンスも False として扱われ、他のオブジェクトは True になります。 ** 以下は最も単純な論理演算です:True and True ==> True True or True ==> True True and False ==> False True or False ==> True False and True ==> False False or True ==> True False and False ==> False False or False ==> False
>>> a = [0, 1, '' ,3] >>> a[0] and a[1] 0
>>> a = [0, 1, '' ,3] >>> a[2] and a[1] ''
複数の論理演算子や / or がある場合、その演算ルールの中心的な考え方は短絡論理です。さて、短絡的なアイデアを見てみましょう (私の要約はインターネット上の他の人の意見とは異なる可能性があります。私の分析をゆっくり聞いてください):
式は、左側の場合、左から右に動作します。 of or 論理値が True の場合、or 以降の式はすべて短絡され、or の左側の式が直接出力されます。
式は左から右に演算され、and の左側の論理値が False の場合、and の左側の式が出力されるまで、後続のすべての and 式が短絡されます。 or の左側は接続に参加します。
or の左辺が False、または and の左辺が True の場合、短絡ロジックは使用できません。
少し抽象的かもしれませんが、大丈夫、次にいくつか例を挙げてみましょう。 これは、Python がこれらの論理ステートメントを処理するときの短絡状況を直感的に理解できるようにする賢い方法です (私も他の人から学びました) それでは、それらが all and ステートメントであると仮定して、簡単に始めましょう Or all orステートメント: 例 11> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() and b() and c() and d() and e(): 18> print 'ok' #显示结果如下 A
1> def a(): 2> print 'A' 3> return 1 4> def b(): 5> print 'B' 6> return 1 7> def c(): 8> print 'C' 9> return [] 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() and b() and c() and d() and e(): 18> print 'ok' #显示结果如下 A B C
1> def a(): 2> print 'A' 3> return 1 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() or b() or c() or d() or e(): 18> print 'ok' #显示结果如下 A ok
1> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() or b() or c() or d() or e(): 18> print 'ok' #显示结果如下 A B C ok
1> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> def f(): 17> print 'F' 18> return 1 19> def g(): 20> print 'G' 21> return [] 22> def h(): 23> print 'H' 24> return 1 25> 26> if a() and b() and c() and d() or e() and f() or g() and h(): 27> print 'ok' #输出结果如下: A E F ok
演算子
python2.5 より前の Python には三項演算子 Guido がありませんでした。 Van Rossum 氏は、これは Python の簡潔化には役立たないと考えていますが、C、C++、Java プログラミングに慣れているプログラマーは、三項演算子をシミュレートするために and or or を使用しようとしていますが、これには Python の短絡ロジックが使用されています。 🎜🎜 三項演算子 bool ? a : b 、 bool が true の場合は a 、そうでない場合は b 。 🎜转化为 python 语言为:
bool and a or b
如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。
换一种更简单的写法:
return a if bool else b
【相关推荐】
以上がPython での および / または の操作ロジックに関するチュートリアルの例を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。