python-布林運算
————《Python學習手冊》讀書筆記
真值測試
在Python中:
- 任何非零數字或非空物件都為真
- 數字零、空物件以及特殊物件None都被認作是假
- 比較和相等測試會遞迴地應用在資料結構中
- 比較和相等測試會返回True或False(1和0的特殊版本)
- 布林and和or運算子會返回真或假的操作物件
Python中有三種布林表示式運算子:
- X and Y
- X or Y
- not X
值比較會返回True或False作為其真值結果(其實是整數1和0的特殊版本,列印時不同但其實完全一樣)。接下來看一些例子:
>>> 2<3,3<2
(True, False)
另一方面,and 和 or運算子總會返回物件(不是運算子左側的物件就是右側的物件),而不是值True或False。如果我們在if或其他語句中測試其結果,總會如預期的結果那樣(每個物件的本質上不是真就是假)。
>>> 2 or 3,3 or 2
(2, 3)
>>> [] or 3
3
>>> 2 and {}
{}
>>> [] and {}
[]
Python中,運算是短路計算。就or測試而言,Python會由左至右求算操作物件,然後返回第一個為真的操作物件,在找到的第一個真值運算元的地方停止。and 運算也是類似。
if/else三元表示式
考慮下列語句,根據X的真值把A設成Y或Z。
if X:
A = Y
else:
A = Z
用四行程式碼編寫似乎太浪費了。Python 2.5 引入了新的表示式格式,讓我們可以在一個表示式中編寫出相同的結果:
A = Y if X else Z
注意,Python的X if Y else Z
和C的Y?X:Z
的順序有點不同。下面看一些例子:
>>> A = 't' if 'spam' else 'f'
>>> A
't'
>>> A = 't' if '' else 'f'
>>> A
'f'
事實上,相同的效果可以小心地用and和or運算子的結合實現,因為它們不是返回左邊的物件就是返回右邊的物件:
A = ((X and Y) or Z)
但有個問題:你得假定Y是布林真值。如果是這樣,效果就相同。
此外,使用下列表示式也是類似的,因為bool函式會把X轉化成對應的整數1或0:
A = [Z,Y][bool(X)]
然而,這並不完全相同,因為這樣不會做短路運算,無論X值是什麼,總是會執行Z和Y。
damant
The quieter you become,the more you are able to hear.
北京
2015-7-17
相關文章
- C#快速入門教程(10)——布林型別與布林運算C#型別
- 【廖雪峰python入門筆記】布林運算和短路計算Python筆記
- ?【程式中的數學】利用德摩根定律簡化布林運算
- PHP基礎教程-17 布林運算子PHP
- Python-資料運算Python
- 布林線的用法圖解:如何運用布林線逃頂和抄底圖解
- 布林帶策略
- TypeScript 布林型別TypeScript型別
- SCSS 布林 型別CSS型別
- 設計師的專屬魔法,用SVG動畫重現布林運算的設計過程SVG動畫
- 面試題:布林變數面試題變數
- HTML 布林屬性值HTML
- 布林代數入門
- 你好,布林瑪!(Blazor元件庫)Blazor元件
- 布林線指標(轉載)指標
- python-算數運算子對應的函式Python函式
- 為計算機發明奠定基礎的《思想法則》出版150週年:什麼是布林邏輯/布林代數? - maa計算機
- 條件和布林操作符
- java布林型別易錯點Java型別
- MySQL手注之盲注(布林)MySql
- javascript 布林型別值判斷JavaScript型別
- Delphi中布林型別辨析 (轉)型別
- C 語言之布林型別介紹型別
- 5.注意Dart中的布林值Dart
- 聊聊快取布林值踩到的坑快取
- vnpy,BollChannel布林線軌道策略分析
- 元組、布林、集合的內建方法
- lua與c++ 中布林布bool值對應關係C++
- python-資料分析-Numpy-3、陣列的運算Python陣列
- 從零構造一臺計算機——布林代數到邏輯電路計算機
- 計算機簡史第三章 機電時代之布林代數計算機
- Pandas知識點彙總(2)——布林索引索引
- javascript型別系統——布林Boolean型別JavaScript型別Boolean
- 資訊檢索與排序模型之布林模型排序模型
- 【冰山白皮書】JS中的布林 數字 字串JS字串
- Python基本資料型別:布林型別(Boolean)Python資料型別Boolean
- 佩奇和布林讓Google成功的13大奇招Go
- 杜布林衝突的系統分析模型(轉載)模型