1. 程式人生 > >4.運算符、三元表達式

4.運算符、三元表達式

href lin 按位或 pos ng- border padding ack img


算術運算符:

算術運算符包含:

+加法運算、

-減法運算、

*乘法運算、

/精確除法運算、

//地板除法運算、

%求余運算、

**冪運算符

+加法運算:

>>> a=1
>>> b=2
>>> c=a+b
>>> c
3

-減法運算:

>>> c=1000
>>> a=6000
>>> b=c-a
>>> b
-5000

*乘法運算:

>>> c=22
>>> a=33
>>> b=c*a
>>> b 726

/精確除法運算、//地板除法運算:

python的除法是比較精確的,沒有像其他一些語言一樣(其他語言的得出20/6=3),例如:

>>> 20/6
3.3333333333333335
>>> 18/5
3.6
>>> 10/2
5.0

如果要使用“地板除法”(不保留小數),需要使用“//”,地板除法中如果其中一個操作數為負數,結果向負無窮取整

>>> 20//6
3
>>> 18//5
3
>>> 10//2
5

技術分享圖片

%求余運算:

返回除法中的余數結果

>>> 5%2
1

**冪運算符:指數(冪)

>>> 2**3
8
>>> 2**-1
0.5
>>> 3**3
27


邏輯運算符:

邏輯運算符包括:

and與運算,

or或運算,

not非運算

and與運算 :

如果x為False,x and y返回False,

如果x為True,返回y的計算值。本質是,z=True and y =y,如果x是真的話,最終結果取決於y

>>> 0 and 2
0
>>> 1 and
2 2 >>> 1 and 99 99 >>> -1 and 99 99

or 或運算:

如果x為False,返回y的值,

如果x為True,不再判斷y,返回x的值。

技術分享圖片

技術分享圖片

not非運算:

“not 表達式” 返回表達式結果的“相反的值”。如果表達式結果為真,則返回false;如果表達式結果為假,則返回true。

>>> not 1
False
>>> not 2
False
>>> not 0
True
>>> not True
False
>>> not False
True

比較運算符(關系運算符):

比較運算符關系運算符包括:

<小於運算符,<=不大於運算符,>大於運算符,>=不小於運算符,==等於運算符,!=運算符

<

如果左操作數的值小於右操作數的值,返回True,否則返回False

技術分享圖片

>

如果左操作數的值大於右操作數的值,返回True,否則返回False

技術分享圖片

!= :

如果兩個操作數的值不相等,返回True,否則返回False

技術分享圖片

<=

如果左操作數的值小於或等於右操作數的值,返回True,否則返回False

技術分享圖片

>=

如果左操作數的值大於或等於右操作數的值,返回True,否則返回False

技術分享圖片

==

如果兩個操作數的值相等,返回True,否則返回False 。【註意,只比較值是否相同,不計較內存地址是否相同

技術分享圖片


賦值運算符:

=:將右側操作數的值分配給左側操作數

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

技術分享圖片


位運算符:

&:

按位與操作

技術分享圖片

|:

按位或操作

技術分享圖片

<<:

二進制左移

技術分享圖片

>>:

二進制右移

技術分享圖片

技術分享圖片


^:

二進制異或

技術分享圖片

~:

~x,返回將x的二進制取反之後的值

技術分享圖片


成員運算符:

成員運算符包括:in運算符,not in運算符

in:

x in y ,如果在指定的序列y中找到x,則返回 true,否則返回 false

not in :

x not in y ,如果在指定的序列y中找不到x,則返回 true,否則返回 false

技術分享圖片

技術分享圖片


身份運算符:

身份運算符包括:is 運算符, is not運算符

身份運算符比較兩個對象的內存位置

is :

內存位置相同返回True,否則返回False

>>> str1="apple"
>>> str2=str1
>>> id(str1)
2590247801216
>>> id(str2)
2590247801216
>>> str2 is str1
True

is not :

內存位置不相同返回True,否則返回False

a=1
b=1
c=999999999
d=999999999
print(id(a),id(b),a is b)
print(id(c),id(c),c is d)
str1="apple"
str2="apple"
print(id(str1),id(str2),str1 is str2)
l1=[a,b,c]
l2=[a,b,c]
print(id(l1),id(l2),l2 is l1)

上述代碼結果:

技術分享圖片

另外的測試:

>>> a=1000000
>>> b=1000000
>>> id(a)
2590249791600
>>> id(b)
2590249791632
>>> a="str1"
>>> b="str1"
>>> id(a)
2590249830528
>>> id(b)
2590249830528

這個問題體現緩存技術的使用:為了節省內存空間,或者為了節省時間,對於數據是同一份不可變的對象的不同名變量,使用緩存技術可以節約空間,而對於可變對象,如即使初值相同的列表,後面的操作不同為了不互相幹擾,所以不使用緩存技術來節約空間。

如何查看緩存設置:待補充


is 與 == 區別:

引用對象是否為同一個, == 用於判斷引用變量的值是否相等。

技術分享圖片

技術分享圖片


運算符優先級:

運算符的優先級:

運算符的次序,序號小的優先級大於序號大的:

技術分享圖片

建議使用小括號來指示運算優先級,避免繁雜記憶。


三元表達式(三元運算符):

格式:條件為真時的結果 if 判定條件 else 條件為假時的結果  
 
>>> a=250 if True else 150
>>> a
250
>>> a=220 if 1<0 else 1
>>> a
1
 

4.運算符、三元表達式