多段实例代码详解7大类Python运算符,建议收藏!
導讀:本文主要介紹Python運算符。舉個簡單的例子:4+5=9,其中,4和5被稱為操作數,+稱為運算符。Python語言支持以下類型的運算符:算術運算符、比較(關系)運算符、賦值運算符、邏輯運算符、位運算符、成員運算符、身份運算符、運算符優先級。下面分別介紹這些運算符的相關內容。
作者:劉鵬 高中強 王一凡?等
來源:大數據DT(ID:hzdashuju)
01 算術運算符
假設變量a=10,b=20,Python中算術運算符及其實例如下所示。
+
加:兩個對象相加
a+b:30
-
減:得到負數或是一個數減去另一個數
a–b:-10
*
乘:兩個數相乘或是返回一個被重復若干次的字符串
a*b:200
/
除:x除以y
b/a:2
%
取模:返回除法的余數
b%a:0
**
冪:返回x的y次冪
a**b:100000000000000000000
//
取整除:返回商的整數部分(向下取整)
9//2:4
-9//2:-5
以下實例演示了Python所有算術運算符的操作:
a?=?21 b?=?10? c?=?0? c?=?a?+?b? print?("1 - c 的值為:",?c) c?=?a?-?b? print?("2 - c 的值為:",?c) c?=?a?*?b? print?("3 - c 的值為:",?c)? c?=?a?/?b? print?("4 - c 的值為:",?c)? c?=?a?%?b? print?("5 - c 的值為:",?c)? #?修改變量?a?、b?、c a?=?2? b?=?3? c?=?a**b? print?("6 - c 的值為:",?c)? a?=?10? b?=?5? c?=?a//b? print?("7 - c 的值為:",?c)輸出結果為:
1?- c 的值為:31 2?- c 的值為:11 3?- c 的值為:210 4?- c 的值為:2.1 5?- c 的值為:1 6?- c 的值為:8 7?- c 的值為:2有一點要注意,在Python 2.x中,整數除整數,只能得出整數。如果要得到小數部分,則需要其中一個數改成浮點數。例如:
1/2? 01.0/2 0.51/float(2) 0.502 比較運算符
假設變量a=10,b=20,Python中比較運算符及其實例如表下所示。
==
等于:比較對象是否相等
(a==b):返回false
!=
不等于:比較兩個對象是否不相等
(a != b):返回true
< >
不等于:比較兩個對象是否不相等(Python 3已廢棄)
(a <> b):返回true
這個運算符與!=類似
>
大于:返回x是否大于y
(a>b):返回false
<
小于:返回x是否小于y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊變量true和false等價
(a<b):返回true
>=
大于等于:返回x是否大于等于y
(a>=b):返回false
<=
小于等于:返回x是否小于等于y
(a<=b):返回true
以下實例演示了Python所有比較運算符的操作:
a?=?21 b?=?10 c?=?0 if?a?==?b?:print?("1?-?a?等于?b") else:print?("1?-?a?不等于?b") if?a?!=?b?:print?("2?-?a?不等于?b") else:print?("2?-?a?等于?b") if?a?<?b?:print?("3?-?a?小于?b") else:print?("3?-?a?大于等于?b") if?a?>?b?:print?("4?-?a?大于?b") else:print?("4?-?a?小于等于?b") #?修改變量?a?和?b?的值 a?=?5 b?=?20 if?a?<=?b?:print?("5?-?a?小于等于?b") else:print?("5?-?a?大于?b") if?b?>=?a?:print?("6?-?b?大于等于?a") else:print?("6?-?b?小于?a")輸出結果為:
1?-?a?不等于?b 2?-?a?不等于?b 3?-?a?大于等于?b 4?-?a?大于?b 5?-?a?小于等于?b 6?-?b?大于等于?a03 賦值運算符
假設變量a=10,b=20,Python中賦值運算符及其實例如下所示。
=
簡單的賦值運算符
c=a+b:將a+b的運算結果賦值為c
+=
加法賦值運算符
c+=a:等效于c=c+a
-=
減法賦值運算符
c-=a:等效于c=c-a
*=
乘法賦值運算符
c*=a:等效于c=c*a
/=
除法賦值運算符
c/=a:等效于c=c/a
%=
取模賦值運算符
c%=a:等效于c=c%a
**=
冪賦值運算符
c**=a:等效于c=c**a
//=
取整除賦值運算符
c//=a:等效于c=c//a
以下實例演示了Python所有賦值運算符的操作:
a?=?21? b?=?10? c?=?0? c?=?a?+?b? print?("1 - c 的值為:",?c?) c?+=?a? print?("2 - c 的值為:",?c)? c?*=?a? print?("3 - c 的值為:",?c)? c?/=?a? print?("4 - c 的值為:",?c) c?=?2? c?%=?a? print?("5 - c 的值為:",?c) c?**=?a? print?("6 - c 的值為:",?c)? c?//=?a? print?("7 - c 的值為:",?c)輸出結果為:
1?- c 的值為:31 2?- c 的值為:52 3?- c 的值為:1092 4?- c 的值為:52 5?- c 的值為:2 6?- c 的值為:2097152 7?- c 的值為:9986404 按位運算符
按位運算符是把數字看作二進制來進行計算。假設變量a=60,b=13,Python中按位運算符及其實例如下所示。
&
按位與運算符:參與運算的兩個值,如果兩個對應位都為1,則該位的結果為1,否則為0
(a&b)輸出結果:12
二進制解釋:0000 1100
|
按位或運算符:只要對應的兩個二進位有一個為1時,結果位就為1
(a|b)輸出結果:61
二進制解釋:0011 1101
^
按位異或運算符:當兩個對應的二進位相異時,結果為1
(a^b)輸出結果:49
二進制解釋:0011 0001
~
按位取反運算符:對數據的每個二進制位取反,即把1變為0,把0變為1。~x類似于-x-1
(~a)輸出結果:-61
二進制解釋:1100 0011
在一個有符號二進制數的補碼形式
<<
左移動運算符:運算數的各二進位全部左移若干位,由<<右邊的數字指定移動的位數,高位丟棄,低位補0
a<<2輸出結果:240
二進制解釋:1111 0000
>>
右移動運算符:把>>左邊的運算數的各二進位全部右移若干位,由>>右邊的數字指定移動的位數
a>>2輸出結果:15
二進制解釋:0000 1111
以下實例演示了Python所有位運算符的操作:
a?=?60#?60?=?0011?1100? b?=?13#?13?=?0000?1101? c?=?0? c?=?a?&?b;#?12?=?0000?1100? print?("1 - c 的值為:",?c) c?=?a?|?b;#?61?=?0011?1101? print?("2 - c 的值為:",?c)? c?=?a?^?b;#?49?=?0011?0001? print?("3 - c 的值為:",?c)? c?=?~a;#?-61?=?1100?0011? print?("4 - c 的值為:",?c)? c?=?a?<<?2;#?240?=?1111?0000? print?("5 - c 的值為:",?c)? c?=?a?>>?2;#?15?=?0000?1111? print?("6 - c 的值為:",?c)輸出結果為:
1?- c 的值為:12 2?- c 的值為:61 3?- c 的值為:49 4?- c 的值為:-61 5?- c 的值為:240 6?- c 的值為:1505 邏輯運算符
假設變量a=10,b=20,Python中邏輯運算符及其實例如下所示。
and
x and y
布爾與:如果x為false,x and y返回false,否則它返回y的計算值
(a and b)返回20
or
x or y
布爾或:如果x是非0,返回x的計算值,否則返回y的計算值
(a or b)返回10
not
not x
布爾非:如果x為true,返回false。如果x為false,返回true
not(a and b)返回False
以下實例演示了Python所有邏輯運算符的操作:
a?=?10? b?=?20? if?a?and?b?:?print?("1?-?變量?a?和?b?都為?true")? else:?print?("1?-?變量?a?和?b?有一個不為?true")? if?a?or?b?:?print?("2?-?變量?a?和?b?都為?true,或其中一個變量為?true")? else:?print?("2?-?變量?a?和?b?都不為?true")?#?修改變量?a?的值? a?=?0? if?a?and?b?:?print?("3?-?變量?a?和?b?都為?true")? else:?print?("3?-?變量?a?和?b?有一個不為?true")? if?a?or?b?:?print?("4?-?變量?a?和?b?都為?true,或其中一個變量為?true")? else:?print?("4?-?變量?a?和?b?都不為?true")? if?not(?a?and?b?):?print?("5?-?變量?a?和?b?都為?false,或其中一個變量為?false")? else:?print?("5?-?變量?a?和?b?都為?true")輸出結果為:
1?-?變量?a?和?b?都為?true 2?-?變量?a?和?b?都為?true,或其中一個變量為?true 3?-?變量?a?和?b?有一個不為?true 4?-?變量?a?和?b?都為?true,或其中一個變量為?true 5?-?變量?a?和?b?都為?false,或其中一個變量為?false06 成員運算符
除了以上運算符外,Python還支持成員運算符。以下測試實例中包含一系列成員,例如字符串、列表或元組,如下所示。
in
如果在指定的序列中找到值,返回true,否則返回false
x在y序列中:如果x在y序列中,則返回True
not in
如果在指定的序列中沒有找到值,返回true,否則返回false
x不在y序列中:如果x不在y序列中,則返回True
以下實例演示了Python所有成員運算符的操作:
a?=?10? b?=?20? list?=?[1,?2,?3,?4,?5?];? if?(?a?in?list):?print?("1?-?變量?a?在給定的列表list中")? else:?print?("1?-?變量?a?不在給定的列表list中") if?(?b?not?in?list?):?print?("2?-?變量?b?不在給定的列表list中") else:?print?("2?-?變量?b?在給定的列表list中") #?修改變量?a?的值? a?=?2? if?(?a?in?list?):?print?("3?-?變量?a?在給定的列表list中") else:?print?("3?-?變量?a?不在給定的列表list?中")輸出結果為:
1?-?變量?a?不在給定的列表list?中 2?-?變量?b?不在給定的列表list?中 3?-?變量?a?在給定的列表list?中07 身份運算符
身份運算符用于比較兩個對象的存儲單元,如下所示。
is
is用于判斷兩個標識符是否引自一個對象
X is y,類似id(x)==id(y),如果引用的是同一個對象,則返回true,否則返回false
is not
is not用于判斷兩個標識符是否引自不同對象
x is not y,類似id(a)!=id(b)。如果引用的不是同一個對象,則返回結果true,否則返回false
以下實例演示了Python所有身份運算符的操作:
a?=?20? b?=?20? if?(?a?is?b?):?print?("1?-?a?和?b?有相同的標識")? else:?print?("1?-?a?和?b?沒有相同的標識")? if?(?a?is?not?b?):?print?("2?-?a?和?b?沒有相同的標識")? else:?print?("2?-?a?和?b?有相同的標識")?#?修改變量?b?的值? b?=?30? if?(?a?is?b?):?print?("3?-?a?和?b?有相同的標識")? else:?print?("3?-?a?和?b?沒有相同的標識")? if?(?a?is?not?b?):?print?("4?-?a?和?b?沒有相同的標識")? else:?print?("4?-?a?和?b?有相同的標識")輸出結果為:
1?-?a?和?b?有相同的標識 2?-?a?和?b?有相同的標識 3?-?a?和?b?沒有相同的標識 4?-?a?和?b?沒有相同的標識is與==的區別在于:is用于判斷兩個變量引用的對象是否為同一個(同一塊內存空間),==用于判斷引用變量的值是否相等。例如:
a?=?[1,?2,?3] b?=?ab?is?a Trueb?==?a Trueb?=?a[?:?] b?is?a Falseb?==?a True08 運算符優先級
按優先級從高到低的順序對所有運算符排序,結果如表下所示。
**
指數(最高優先級)
~ + -
按位翻轉,一元加號和減號(最后兩個的方法名為+@和-@)
* / % //
乘、除、取模和取整除
+ -
加法減法
>> <<
右移、左移運算符
&
位AND
^ |
位運算符
<=?< >?>=
比較運算符
<>?==?!=
等于運算符
= %= /= //= -= += *= **=
賦值運算符
is is not
身份運算符
in not in
成員運算符
not and or
邏輯運算符
以下實例演示了Python中不同運算符按照不同優先級的操作:
a?=?20? b?=?10? c?=?15? d?=?5? e?=?0? e?=?(a?+?b)?*?c?/?d#?(?30?*?15?)?/?5? print?("(a + b)?* c / d 運算結果為:",?e?) e?=?((a?+?b)?*?c)?/?d#?(30?*?15?)?/?5? print?("((a + b)?* c)?/ d 運算結果為:",?e)? e?=?(a?+?b)?*?(c?/?d);#?(30)?*?(15/5)? print?("(a + b)?*?(c / d)?運算結果為:",?e)? e?=?a?+?(b?*?c)?/?d;#?20?+?(150/5)? print?("a +?(b * c)?/ d 運算結果為:",?e)輸出結果為:
(a + b)?* c / d 運算結果為:90 ((a + b)?* c)?/ d 運算結果為:90 (a + b)?*?(c / d)?運算結果為:90 a +?(b * c)?/ d 運算結果為:50關于作者:劉鵬,教授,清華大學博士,云計算、大數據和人工智能領域的知名專家,南京云創大數據科技股份有限公司總裁、中國大數據應用聯盟人工智能專家委員會主任。中國電子學會云計算專家委員會云存儲組組長、工業和信息化部云計算研究中心專家。
高中強,人工智能與大數據領域技術專家,有非常深厚的積累,擅長機器學習和自然語言處理,尤其是深度學習,熟悉Tensorflow、PyTorch等深度學習開發框架。曾獲“2019年全國大學生數學建模優秀命題人獎”。參與鐘南山院士指導新型冠狀病毒人工智能預測系統研發項目,與鐘南山院士團隊共同發表學術論文。
本文摘編自《Python金融數據挖掘與分析實戰》,經出版方授權發布。(ISBN:9787111696506)
《Python金融數據挖掘與分析實戰》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:云創大數據(上市公司)總裁撰寫,零基礎學會金融數據挖掘,配有案例、視頻、代碼、數據、習題及答案。
劃重點👇
干貨直達👇
4918字,詳解商品系統的存儲架構設計
人工智能、機器學習、深度學習的關系,終于有人講明白了
首次公開,用了三年的 pandas 速查表!
盤點數據治理的6個價值
更多精彩👇
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
👇
總結
以上是生活随笔為你收集整理的多段实例代码详解7大类Python运算符,建议收藏!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DSP精华资料
- 下一篇: websocket python爬虫_p