详解7类Python运算符及代码举例
導讀:運算這一概念起源于數學,即通過運算法使參與運算的元素得出確定且可重復的結果。作為計算機的核心功能,運算架構起計算機系統的邏輯體系。計算機運算并不局限于普通的數學計算,它更貼近于“邏輯推算”這一概念,其根本目的就是實現邏輯推算。
?
運算符是運算法則的具體體現。Python提供了算術運算符、賦值運算符、比較運算符、邏輯運算符、位運算符、身份運算符和成員運算符7類運算符,從而實現了豐富多樣的運算功能。
?
作者:李明江 張良均 周東平 張尚佳
來源:大數據DT(ID:bigdatadt)
?
?
?
01 算術運算符
?
算術運算符是對運算數進行算術運算的一系列符號,能夠滿足一般的運算需求。Python中的算術運算符如下所示。
?
-
+:加,兩個對象相加
-
-:減,得到負數或一個數減去另一個數
-
*:乘,兩個數相乘或返回一個被重復若干次的字符串
-
/:除,x除以y
-
%:取模,返回除法的余數
-
**:冪,返回x的y次冪
-
//:取整除,返回商的整數部分
?
算術運算結果的數字類型與運算數的類型有關。進行除法(/)運算時,不管商為整數還是浮點數,運算結果始終為浮點數。要得到整型的商,需要用雙斜杠(//)做整除,且除數必須是整型的。對于其他的運算,只要任一運算數為浮點數,運算結果就是浮點數。Python算術運算的基礎使用方法如下所示。
?
num_int?=?4 num_float?=?4.0 print('整數與浮點數的和為:',?num_int?+?num_float)????#Out[1]:?整數與浮點數的和為:8.0????print('整數與浮點數的差為:',?num_int?-?num_float)#Out[2]:?整數與浮點數的差為:?0.0????print('整數與浮點數的積為:',?num_int?*?num_float)#Out[3]:?整數與浮點數的積為:16.0????print('浮點數與整數的商為:',?num_float?/?num_int)#Out[4]:?浮點數與整數的商為:1.0????print('浮點數對整數取模結果為:',?num_float?%?num_int)#Out[5]:?浮點數對整數取模結果為:?0.0????print('浮點數的整數次冪為:',?num_float?**?num_int)#Out[6]:?浮點數的整數次冪為:256.0?????
?
02 賦值運算符
?
賦值運算符用于變量的賦值和更新。Python的賦值運算符除基礎賦值運算符(=)外,還包括加法賦值運算符、減法賦值運算符等。嚴格地說,除基礎賦值運算符外,其他都屬于特殊的賦值運算符。Python中的賦值運算符如下所示。
?
-
=:賦值運算
-
+=:加法賦值運算
-
-=:減法賦值運算
-
*=:乘法賦值運算
-
/=:除法賦值運算
-
%=:取模賦值運算
-
**=:冪賦值運算
-
//=:取整除賦值運算
?
表2-2中的特殊賦值運算符可以看作變量的快速更新,更新意味著該變量是存在的,而對于一個之前不存在的變量,不能使用特殊的賦值運算符。Python賦值運算的基礎使用方法如下所示。
?
num_int1?=?4 print('賦值后num_int1為:',?num_int1)#Out[7]:?賦值后num_int1為:4num_int1?=?4?+?6 print('賦值后num_int1為:',?num_int1)#Out[8]:?賦值后num_int1為:10num_int1?=?4?*?2 print('賦值后num_int1為:',?num_int1)#Out[9]:?賦值后num_int1為:8num_int1?=?4?/?2 print('賦值后num_int1為:',?num_int1)#Out[10]:?賦值后num_int1為:2.0num_int1?=?4?%?2 print('賦值后num_int1為:',?num_int1)#Out[11]:?賦值后num_int1為:?0num_int1?=?4?**?2 print('賦值后num_int1為:',?num_int1)#Out[12]:?賦值后num_int1為:16?
?
?
03 比較運算符
?
比較運算符用于對比數之間的大小或是否相等。Python中的比較運算符如下所示。
?
-
==:表示等于,比較對象是否相等
-
!=:表示不等于,比較兩個對象是否不等
-
>:表示大于,返回x是否大于y
-
<:表示小于,返回x是否小于y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的首字母大寫
-
>=:表示大于等于,返回x是否大于等于y
-
<=:表示小于等于,返回x是否小于等于y
?
比較運算符也可用于字符之間的比較。Python中的字符使用ASCII編碼,每個字符都有屬于自己的ASCII碼,字符比較的本質是字符ASCII碼的比較。Python比較運算的基礎使用方法如下所示。
?
num_int?=?4 num_float?=?4.0 print('num_int與num_float是否相等:',?num_int?==?num_float)#Out[13]: num_int與num_float是否相等:Trueprint('num_int與num_float是否不相等:',?num_int?!=?num_float)#Out[14]: num_int與num_float是否不等:Falseprint('num_int是否大于num_float:',?num_int?>?num_float)#Out[15]: num_int是否大于num_float:Falseprint('num_int是否小于num_float:',?num_int?<?num_float)#Out[16]: num_int是否小于num_float:Falseprint('num_int是否大于等于numfloat:',?num_int?>=?num_float)#Out[17]: num_int是否大于等于numfloat:Trueprint('num_int是否小于等于num_float:',?num_int?<=?num_float)#Out[18]: num_int是否小于等于num_float:True?
?
?
04 邏輯運算符
?
邏輯運算即判斷事物之間的“與”“或”“非”關系,Python中的邏輯運算符包含and、or、not,如下所示。
?
-
and,x and y:表示與,x為False時,“x and y”返回False,否則返回y的計算值
-
or,x or y:表示或,x為True時,“x or y”返回x的值,否則返回y的計算值
-
not,not x:表示非,x為True時,“not x”返回False,否則返回True
?
Python邏輯運算的基礎使用方法如下所示。
?
num_bool1?=?False num_bool2?=?True print('num_bool1 and num_bool2返回值為:',?num_bool1?and?num_bool2)????#Out[19]: num_bool1 and num_bool2返回值為:False ???print('num_bool1 or num_bool2返回值為:',?num_bool1?or?num_bool2)????#Out[20]: num_bool1 or num_bool2返回值為:True ???print('not num_bool2的返回值為:',?not?(num_bool2))????#Out[21]: not num_bool2的返回值為:False ????
?
?
05 按位運算符
?
十進制數被人們廣泛使用,但對于計算機而言,二進制數反而是更重要的,計算機的一切計算都建立在二進制數計算的基礎上。按位運算是一種將十進制數轉為二進制數再進行運算的過程。Python中的位運算符如下所示。
?
-
&:表示按位與,參與運算的兩個值相應位都為1,則該位的結果為1,否則為0
-
|:表示按位或,只要對應的兩個二進制位有一個為1,結果位就為1
-
^:表示按位異或,當兩個對應的二進制位相異時,結果為1
-
~:表示按位取反,對每個二進制位取反,把1變為0,把0變為1。~x類似于-x-1
-
<<:表示左移,二進制位左移,由“<<”右邊的數指定移動位數,高位丟棄,低位補0
-
>>:表示右移,“>>”左邊運算數的二進制位全部右移,“>>”右邊的數指定移動的位數
?
Python按位運算的基礎使用方法如下所示。
?
num_int1?=?15??#?15?=?00001111 num_int2?=?23??#?23?=?00010111 #?按位與,num_int1 & num_int2 =?00000111 print('num_int1按位與num_int2結果為:',?num_int1?&?num_int2)#Out[22]: num_int1按位與num_int2結果為:7#?按位或,num_int1 | num_int2 =?00011111 print('num_int1按位或num_int2結果為:',?num_int1?|?num_int2)#Out[23]: num_int1按位或num_int2結果為:31 ???#?按位異或,num_int1 ^ num_int2 =?00011000 print('num_int1按位異或num_int2結果為:',?num_int1?^?num_int2)#Out[24]: num_int1按位異或num_int2結果為:24#?按位取反,~ num_int1 = 11110000 print('num_int1按位取反結果為:',?~?num_int1)#Out[25]: num_int1按位取反結果為:?-16#?左移動兩位,num_int1?<<?2?=?00111100 print('num_int1左移動兩位結果為:',?num_int1?<<?2)#Out[26]: num_int1左移動兩位結果為:60#?右移動兩位,num_int1?>>?2?=?00000011 print('num_int1右移動兩位結果為:',?num_int1?>>?2)#Out[27]: num_int1右移動兩位結果為:3?
?
在按位運算中,取反運算較難理解,因為涉及補碼的計算。
?
十進制數的二進制原碼包括符號位和二進制值。以“60”為例,其二進制原碼為“00111100”,第1位為符號位,0代表正數,1則代表負數。正數的補碼與二進制原碼相同,負數的補碼則為二進制原碼符號位保持不變,其余各位取反后再在最后一位上加1。
?
取反操作可以總結為以下5個步驟。
?
取十進制數的二進制原碼。
對原碼取補碼。
補碼取反(得到最終結果的補碼)。
取反結果再取補碼(得到最終結果的原碼)。
二進制原碼轉十進制數。
?
?
06 身份運算符
?
身份運算符用于比較兩個對象的儲存單位,如下所示。
?
-
is:is用于判斷兩個對象的儲存單位是否相同
-
is not:is not用于判斷兩個對象的儲存單位是否不同
?
Python身份運算的基礎使用方法如下所示。
?
num_int1?=?15 num_int3?=?15 print('num_int1與num_int3儲存單位是否相同:',?num_int1?is?num_int3)#Out[28]: num_int1與num_int3儲存單位是否相同:Truenum_int2?=?15.0 print('num_int1與num_int2儲存單位是否相同:',?num_int1?is?num_int2)#Out[29]: num_int1與num_int2儲存單位是否相同:False#?如果儲存單位相同就返回True,否則返回False print('num_int1與num_int3儲存單位是否不同:',?num_int1?is?not?num_int3)#Out[30]: num_int1與num_int3儲存單位是否不同:Falseprint('num_int1與num_int2儲存單位是否不同:',?num_int1?is?not?num_int2)#Out[31]: num_int1與num_int2儲存單位是否不同:True?
?
在身份運算中,內存地址相同的兩個變量進行is運算時,返回True;內存地址不同的兩個變量進行is not運算時,返回True。當a、b獲取到一樣的值時,兩個變量就獲取同樣的內存地址。
?
?
07 成員運算符
?
成員運算符的作用是判斷某個指定值是否存在某一序列中,包括字符串、列表和元組,如下所示。
?
-
in:如果在指定序列中找到指定值,返回True,否則返回False
-
not in:如果在指定序列中沒找到指定值,返回True,否則返回False
?
Python成員運算的基礎使用方法如下所示。
?
num_int1?=?15 list2?=?[1,?'apple',?15]print('num_int1是否在list2中:',?num_int1?in?list2)#Out[32]: num_int1是否在list2中:Truearray?=?('orange',?6,?15) print('num_int1是否不在array中:',?num_int1?not?in?array)#Out[33]: num_int1是否不在array中:False?
?
08 運算符優先級
?
在Python中,運算符操作很常見,運算通常以表達式的形式進行。表達式由運算符和運算數組成,比如“1+2”就是一個表達式,其中的“+”是運算符,“1”和“2”則是運算數。一個表達式往往包含不止一個運算符,當一個表達式中存在多個運算符時,就需要考慮運算的順序,即運算符的優先級。
?
運算符的優先級如下所示,優先級從上往下依次降低,同一優先級的運算符按從左到右的順序進行運算。
?
**:指數(最高優先級)
~ + -:按位翻轉,一元加號和減號(最后兩個的方法名為+@和-@)
* / % //:乘、除、取模和取整除
+ -:加法、減法
>> <<:右移、左移運算符
&:位“AND”
^ |:位運算符
<= < > >=:比較運算符
<> == !=:等于運算符
= %= /= //= -= += *= **=:賦值運算符
is is not:身份運算符
in not in:成員運算符
and or not:邏輯運算符
?
運算符優先級的基礎使用方法如下所示。
?
?
#?先執行乘除法運算,再執行加減法運算 print('num_float?+?num_int1?/?num_int3?=',?num_float?+?num_int1?/?num_int3) #Out[34]:?num_float?+?num_int1?/?num_int3?=?5.0#?先執行加減法運算,再執行比較運算 print('num_int1 - num_int2 > num_int1 - num_int3:',num_int1?-?num_int2?>?num_int1?-?num_int3)#Out[35]: num_int1 - num_int2 > num_int1 - num_int3:False#?先執行加減法運算,再做身份判斷 print('num_int1 - num_int3 + num_int1 is num_int1:',num_int1?-?num_int3?+?num_int1?is?num_int1)#Out[36]: num_int1 - num_int3 + num_int1 is num_int1:True#?先執行指數運算,再執行減法運算,最后做身份判斷 print('num_float ** 2 - 1 is not num_int2:',num_float?**?2?-?1?is?not?num_int2)#Out[37]: num_float ** 2 - 1 is not num_int2:True?
關于作者:李明江,資深大數據專家,貴州省計算機學會常務理事,黔南州大數據專家委員會委員,黔南州計算機學會會長,黔南州教育信息化建設專家庫專家,黔南民族師范學院計算機與信息學院院長,全國高校大數據教育聯盟理事。
張良均,資深大數據挖掘與分析專家、模式識別專家、AI技術專家。有10余年大數據挖掘與分析經驗,擅長Python、R、Hadoop、Matlab等技術實現的數據挖掘與分析,對機器學習等AI技術驅動的數據分析也有深入研究。
?
本文摘編自《Python3智能數據分析快速入門》,經出版方授權發布。
?
延伸閱讀《Python3智能數據分析快速入門》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
?
推薦語:本書假設你有一定的數據分析基礎,但是沒有Python和AI基礎,為了幫助你快速掌握智能數據分析需要的技術和方法,書中有針對性地講解了Python和AI中必須要掌握的知識點,內容由淺入深,循序漸進。從環境配置、基本語法、基礎函數到第三方庫的安裝與使用,對各個操作步驟、函數、工具、代碼示例等的講解非常詳盡,確保所有滿足條件的讀者都能快速入門。
?
?
「大數據」內容合伙人之「鑒書小分隊」上線啦!
?
最近,你都在讀什么書?有哪些心得體會想要跟大家分享?
?
數據叔最近搞了個大事——聯合優質圖書出版商機械工業出版社華章公司發起鑒書活動。
?
簡單說就是:你可以免費讀新書,你可以免費讀新書的同時,順手碼一篇讀書筆記就行。詳情請在大數據公眾號后臺對話框回復合伙人查看。
?
?
有話要說?
?
Q:?你最常用哪類運算?
歡迎留言與大家分享
?
猜你想看?
?
-
?
-
?
-
?
-
?
?
更多精彩?
?
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
?
PPT?|?報告?|?讀書?|?書單?|?干貨?
大數據?|?揭秘?|?Python?|?可視化
AI?|?人工智能?|?5G?|?中臺
機器學習?|?深度學習?|?神經網絡
合伙人?|?1024?|?段子?|?數學
?
據統計,99%的大咖都完成了這個神操作
?
?
?
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯系:baiyu@hzbook.com
更多精彩,請在后臺點擊“歷史文章”查看
點擊閱讀原文,了解更多
總結
以上是生活随笔為你收集整理的详解7类Python运算符及代码举例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解数据分析体系构成框架
- 下一篇: 真正零基础Python入门:手把手教你从