運算子
算數運算子
設:a = 10, b = 20
| 運算子 | 描述 | 實體 |
|---|---|---|
| + | 加-兩個物件相加 | a + b 輸出結果 30 |
| - | 減-得到負數或是一個數減去另一個數 | a - b 輸出結果-10 |
| * | 乘-兩個數相乘或是回傳一個被重復若干次的字串 | a * b 輸出結果 200 |
| / | 除-x除以y,操作后默認資料型別是float型 | b / a 輸出結果2.0 |
| % | 取模-回傳除法的余數 | b % a 輸出結果 0 |
| ** | 冪-回傳x的y次冪 | 2 ** 3為2的3次方,輸出結果 8 |
| // | 取整除-回傳商的整數部分(向下取整) | 9 // 2 輸出結果 4 |
| () | 優先級 | (1+1)*3 輸出結果 6 |
比較(關系)運算子
設:a = 10, b = 20
| 運算子 | 描述 | 實體 |
|---|---|---|
| == | 等于-比較物件是否相等 | (a == b)回傳False |
| != | 不等于-比較兩個物件是否不相等 | (a != b)回傳True |
| > | 大于-回傳x是否大于y | (a > b)回傳False |
| < | 小于-回傳x是否小于y | (a < b)回傳True |
| >= | 大于等于-回傳x是否大于等于y | (a >= b)回傳False |
| <= | 小于等于-回傳x是否小于等于y | (a <= b)回傳True |
ps:所有比較運算子回傳1表示真,回傳0表示假,這分別與特殊的變數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 |
# 單變數賦值
num = 1
print(num+1) # 2
# 多變數賦值
num1, float1, str1 = 10, 0.5, 'hello world'
print(num1, float1, str1) # 10 0.5 hello world
# 多變數相同賦值
a=b=10
print(a, b) # 10 10
# 復合賦值運算子
a = 1
a += 1 # 即a = a + 1,最終a = 1 + 1
print(a) # 2
# 其他符合賦值運算子也是如此
邏輯運算子
設:a = 10, b = 20
| 運算子 | 邏輯運算式 | 描述 | 實體 |
|---|---|---|---|
| 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 |
a = 1
b = 2
c = 3
d = 0
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True
# 數學之間的邏輯運算子
# and運算子,只要有一個值為0,則結果為0,否則結果為最后一個非0數字
print(a and b) # 2
print(a and c) # 3
print(a and d) # 0
# or運算子,只有所有值為0結果才為0,否則結果為第一個非0數字
print(a or b) # 1
print(a or c) # 1
print(b or d) # 2
print(d or a) # 1
print(d or b) # 2
位運算子
位運算子是把數字看作二進制來進行計算的
設 a = 60,b = 13,二進制格式:a = 0011 1100,b = 0000 1101
| 運算子 | 描述 | 實體 |
|---|---|---|
| & | 按位與運算子:參與運算的兩個值,如果兩個相應位都為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 |
ps:位運算子用到的很少,了解即可
成員運算子
| 運算子 | 描述 | 實體 |
|---|---|---|
| in | 如果在指定的序列中找到值回傳 True,否則回傳 False, | x 在 y 序列中 , 如果 x 在 y 序列中回傳 True, |
| not in | 如果在指定的序列中沒有找到值回傳 True,否則回傳 False, | x 不在 y 序列中 , 如果 x 不在 y 序列中回傳 True, |
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 串列
print(1 in l1) # 在串列里 True
print('1' not in l1) # 不在串列面 True
身份運算子
| 運算子 | 描述 | 實體 |
|---|---|---|
| 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, |
l1 = [1, 2, 3]
l2 = l1
l3 = l1.copy() # 復制這個串列
print(l1, id(l1)) # id 回傳的是記憶體地址
print(l2, id(l2)) # id 回傳的是記憶體地址
print(l3, id(l3)) # id 回傳的是記憶體地址
"""
[1, 2, 3] 2173351947904
[1, 2, 3] 2173351947904
[1, 2, 3] 2173354639104
"""
print(l1 is l2) # 判斷的是記憶體地址
print(l1 is l3) # 判斷的是記憶體地址
print(l1 == l2) # 比較的是我們了兩個串列的值
print(l1 == l3) # 比較的是我們了兩個串列的值
"""
True
False
True
True
"""
ps:is 和 == 是不同的,is是絕對相等,即判斷兩變數記憶體地址是否相等,等價于id(x) == id(y)
本文來自博客園,作者:大-鍋,轉載請注明原文鏈接:https://www.cnblogs.com/daguo118/p/17147484.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544814.html
標籤:Python
上一篇:Python工具箱系列(二十六)
