<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        分享python中and/or的運算邏輯實例教程

        來源:懂視網 責編:小采 時間:2020-11-27 14:24:14
        文檔

        分享python中and/or的運算邏輯實例教程

        分享python中and/or的運算邏輯實例教程:python中 and 和 or 運算的核心思想 ——— 短路邏輯 最近開始看廖雪峰的python教程,打算先把 《learn python the hard way》放一放,因為最后幾章感覺還是有點難度(好吧,是我太弱了,不過慢慢來吧,一步一個腳印),想著看完廖雪峰的教程之后再回過頭來,
        推薦度:
        導讀分享python中and/or的運算邏輯實例教程:python中 and 和 or 運算的核心思想 ——— 短路邏輯 最近開始看廖雪峰的python教程,打算先把 《learn python the hard way》放一放,因為最后幾章感覺還是有點難度(好吧,是我太弱了,不過慢慢來吧,一步一個腳印),想著看完廖雪峰的教程之后再回過頭來,

        python中 and 和 or 運算的核心思想 ——— 短路邏輯

          最近開始看廖雪峰的python教程,打算先把 《learn python the hard way》放一放,因為最后幾章感覺還是有點難度(好吧,是我太弱了,不過慢慢來吧,一步一個腳印),想著看完廖雪峰的教程之后再回過頭來,或許能有些思路。

          好吧,言歸正傳,今天之所以寫這個,就是因為在廖雪峰教程里 filter 一章里出現了 and / or 的運算,之前的教程沒有提到過這個,剛看的時候有些困惑,一頭霧水,代碼如下:

         #把一個序列中的空字符串刪掉
        
         1> def not_empty(s):
         2> return s and s.strip()
         3>
         4> filter(not_empty, ['A', '', 'B', None, 'C', ' '])

          后來在網上查了一些關于 and / or 的運算邏輯,加上自己的理解,總結如下(不知是否有誤,若有紕漏,還請各位斧正):

        1. 包含一個邏輯運算符

          首先從基本的概念著手,python中哪些對象會被當成 False 呢?而哪些又是 True 呢?

        **在Python中,None、任何數值類型中的0、空字符串“”、空元組()、空列表[]、空字典{}都被當作False,還有自定義類型,如果實現了  nonzero () 或  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

          利用上面兩點我們就可以舉一些例子:

        example 1

         >>> a = [0, 1, '' ,3]
         >>> a[0] and a[1]
         0

          a[0] = 0 , a[1] = 1 , 所以 a[0] and a[1] 就變成了 0 and 1 (False and True),所以為 0 (False)。

        example 2

         >>> a = [0, 1, '' ,3]
         >>> a[2] and a[1]
         ''

          兩個同時為 False ,返回左邊的值。

        2. 包含兩個及以上的邏輯運算符

          邏輯運算符 and / or 一旦不止一個,其運算規則的核心思想就是短路邏輯。好的,那我們就來了解一下短路思想(本人歸納,可能與網上其他人的有些出入,且聽我慢慢分析):

        表達式從左至右運算,若 or 的左側邏輯值為 True ,則短路 or 后所有的表達式,直接輸出 or 左側表達式 。

        表達式從左至右運算,若 and 的左側邏輯值為 False ,則短路其后所有 and 表達式,直到有 or 出現,輸出 and 左側表達式到 or 的左側,參與接下來的邏輯運算。

        若 or 的左側為 False ,或者 and 的左側為 True 則不能使用短路邏輯。

          可能有點抽象,沒關系,我們接下來就舉一些例子。

          這里有一個巧妙的方法,能讓我們直觀地了解 python 處理這些邏輯語句時的短路情況(我也是跟別人學的)

          好了,就讓我們從簡單的開始,假設全是 and 語句 或者全是 or 語句:

        example 1

         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() and b() and c() and d() and e():
         18> print 'ok'
         
         #顯示結果如下
         A

          a() 的邏輯值為 False ,其后均為 and 語句,全部短路,最終返回 a() 的表達式。

        example 2

         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

          a() 的邏輯值為 True,不能短路其后,與 b() 進行邏輯運算,返回 b() 的邏輯值 True,與 c() 進行邏輯運算,返回 c() 的邏輯值 False,其后均為 and 語句, 則全部短路,最終返回 c() 的表達式。

        example 3

         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

          a() 的邏輯值為 True ,其后均為 or 語句,全部短路,最終返回 a() 的表達式。

        example 4

         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

          a() 的邏輯值為 True,不能短路其后,與 b() 進行邏輯運算,返回 b() 的邏輯值 False,與 c() 進行邏輯運算,返回 c() 的邏輯值 True,其后均為 or 語句,則全部短路,最終返回 c() 的表達式。

          下面我們就來講一下 and 與 or 語句同時存在的情況:

        example 5

         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

          別以為語句很長就很難,我們好好分析一下,首先是 a() 的邏輯值為 False,其后到 or 語句為止有三條 and 語句: a() and b() and c() and d(),均被短路。得到 a() or e() 為True,輸出 e() ,得 e() and F() 為 True ,輸出 f(), 其后接 or 語句,則短路其后所有。(結合我總結的短路邏輯的三點好好理解,應該沒問題。)

        3. 三元運算操作符

          在python2.5 之前,python 是沒有三元操作符的,Guido Van Rossum 認為它并不能幫助 python 更加簡潔,但是那些習慣了 c 、 c++ 和 java 編程的程序員卻嘗試著用 and 或者 or 來模擬出三元操作符,而這利用的就是python的短路邏輯。

          三元運算操作符 bool ? a : b ,若 bool 為真則 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

        【相關推薦】

        1. Python and、or以及and-or語法總結

        2. 解析python中and與or用法

        3. 詳細介紹Python中and和or實際用法

        4. 總結Python的邏輯運算符and

        5. Python:邏輯判斷與運算符實例

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        分享python中and/or的運算邏輯實例教程

        分享python中and/or的運算邏輯實例教程:python中 and 和 or 運算的核心思想 ——— 短路邏輯 最近開始看廖雪峰的python教程,打算先把 《learn python the hard way》放一放,因為最后幾章感覺還是有點難度(好吧,是我太弱了,不過慢慢來吧,一步一個腳印),想著看完廖雪峰的教程之后再回過頭來,
        推薦度:
        標簽: and 邏輯 示例
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲五月午夜免费在线视频| 学生妹亚洲一区二区| 麻豆69堂免费视频| 在线视频免费国产成人| 亚洲精品乱码久久久久久V| 最近最好的中文字幕2019免费| 亚洲高清无在码在线电影不卡| 久久不见久久见免费视频7 | 欧洲一级毛片免费| 亚洲另类激情综合偷自拍| 中文字幕在线观看免费视频| 亚洲人成日本在线观看| 午夜无遮挡羞羞漫画免费| 亚洲AV无码专区在线电影成人| 日韩免费一级毛片| 大片免费观看92在线视频线视频| 亚洲综合精品香蕉久久网| 无码av免费一区二区三区| 亚洲视频一区二区三区四区| 免费看a级黄色片| 夜夜爽妓女8888视频免费观看| 亚洲成A人片777777| 国产精品爱啪在线线免费观看| 亚洲精品日韩一区二区小说| 亚洲男人在线无码视频| 性无码免费一区二区三区在线| 亚洲成年人电影在线观看| 国产午夜免费福利红片| a视频免费在线观看| 亚洲国产高清美女在线观看| 全部免费毛片免费播放| 华人在线精品免费观看| 亚洲喷奶水中文字幕电影| 免费国产怡红院在线观看| 鲁丝片一区二区三区免费| 中文有码亚洲制服av片| 中文字幕亚洲综合久久男男| 免费影院未满十八勿进网站| 一级毛片高清免费播放| 亚洲av一本岛在线播放| 亚洲人成人一区二区三区|