python_運算符與表達式
阿新 • • 發佈:2019-03-04
variable 成員 cab 矩陣 條件 span 字符 邏輯或 table
運算符與表達式
-
python運算符
運算符 功能說明 + 算術加法,列表、元組、字符串合並與連接,正號 - 算術減法,集合差集,相反數 * 算術乘法,序列重復 / 真除法 // 求整商,但如果操作數中有實數的話,結果為實數形式的整數 % 求余數,字符串格式化 ** 冪指數 <,<=,>,>=,==,!= (值)大小比較,集合的包含關系比較 or 邏輯或 and 邏輯與 not 邏輯非 in 成員測試 is 對象同一性測試,即測試是否為同一對象或內存地址是否相同 |,^,&,<<,>>,~ 位或,位異或,位與,左移位,有移位,位求反 &,|,^ 集合交集、並集、對稱差集 @ 矩陣相乘運算符
算術運算符
-
+運算符除了用於算術加法以外,還可以用於列表、元組、字符串的連接,但不支持不同類型的對象之間相加或連接
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> (1,2,3) + (4,)
(1, 2, 3, 4)
>>> ‘abc‘ + ‘1234‘
>>> ‘A‘ + 1 # 不支持字符與數字相加,拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> True + 3
4
>>> False + 3
3 -
*運算符除了表示算術乘法,還可用與列表、元組、字符串這幾個序列類型與整數的乘法,表示序列元素的重復,生成新的序列對象。字典和集合不支持與整數的相乘,因為其中的元素是不允許重復的。
>>> True*3
3
>>> False * 4
0
>>> [1,2,3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1,2,3) * 2
(1, 2, 3, 1, 2, 3)
>>> ‘abc‘*3
‘abcabcabc‘ -
運算符/和//在python中分別表示算術除法和算術求整商
>>> 3/2
1.5
>>> 15 // 4
3
>>> 15.0 // 4
3.0
>>> -15 // 4 # 向下取整
-4 -
%運算符可以用與整數或實數的求余數運算,還可以用於字符串格式化,但是並不推薦這種用法
>>> 789 % 23
7
>>> 123.45 % 3.2
1.849999999999996
>>> ‘%c,%d‘%(65,65)
‘A,65‘
>>> ‘%f,%s‘%(65,65)
‘65.000000,65‘ -
**運算符表示冪乘,等價與內置函數pow()
>>> 3 ** 2
9
>>> pow(3,2,8) # 等價於(3**2)%8
1
>>> 9 ** 0.5
3.0
>>> (-9)**0.5 # 可以計算負數的平方根
(1.8369701987210297e-16+3j)
關系運算符
-
python關系運算符最大的特點是可以連用,其含義於我們日常的理解完全一致。使用關系運算符的一個最中要的前提是,操作數之間必須可以比較大小。
>>> 1<3<5 # 等價於1<3 and 3<5
True
>>> 1<5>2
True
>>> 1>6<8
False
>>> 1>6<math.sqrt(9) # 具有惰性求值或者邏輯短路的特點
False
>>> 1<6<math.sqrt(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ‘math‘ is not defined
>>> import math
>>> 1<6<math.sqrt(9)
False
>>> ‘Hello‘>‘world‘ # 比較字符串的大小
False
>>> {1,2,3}<{1,2,3,4} # 測試是否是子集
True
>>> [1,2,3]<[1,2,4] # 比較列表的大小
True
>>> [1,2,3]<[1,2,3]
False
>>> [1,2,3]<[1,1,4]
False
>>> ‘Hello‘>3 # 字符串和數字不能比較
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ‘>‘ not supported between instances of ‘str‘ and ‘int‘
>>> {1,2,3}=={3,2,1} # 測試兩個集合是否相等
True
>>> {1,2,4}>{1,2,3}
False
>>> {1,2,4}>{1,2} # 測試是否子集True>>> {1,2,4}>{1,2,4}False
成員測試運算符in與同一性測試運算符is
-
成員測試運算符in
>>> 3 in [1,2,3]
True
>>> 5 in range(1,10,1) # range()是用來生成指定範圍數字的內置函數
True
>>> ‘abc‘ in ‘abcfhdgd‘
True
>>> for i in (3, 5, 7):
... print(i,end=‘\t‘)
...
3 5 7 >>>
? -
同一性測試運算符is
測試兩個對象是否是同一個,如果兩個對象是同一個,兩者具有相同的地址
>>> 3 is 3
True
>>> x = [300, 300, 300] # 基於值的內存管理,同一個值在內存中只有一份
>>> x[0] is x[1]
True
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x is y
False
>>> x[0] is y[0]
True
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> x = y
>>> x
[1, 2, 3]
>>> x is y
True
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
>>>
位運算與集合運算
-
位運算符只能用於整數
-
位運算規則
# 位與運算&
1 & 1 = 1
1 & 0 = 0 & 1 = 0 & 0 = 0
# 位或運算
1 | 1 = 1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
# 位異或運算
1 ^ 1 = 0 ^ 0 = 0
0 ^ 1 = 1 ^ 0 = 1
# 左位移時右側補0,每左位移一位相當於乘以2;右位移時左側補0,每右位移一位相當於除以2 -
示例
>>> 3 << 2
12
>>> 23 >> 2
5
>>> 3 & 7
3
>>> 3 | 8
11
>>> 3 ^ 5
6 -
集合的並集、交集、對稱差集、差集
>>> {1, 2, 3} | {3, 4, 5} # 並集
{1, 2, 3, 4, 5}
>>> {1, 2, 3} & {3, 4, 5} # 交集
{3}
>>> {1, 2, 3} ^ {3, 4, 5} # 對稱差集
{1, 2, 4, 5}
>>> {1, 2, 3} - {3, 4, 5} # 差集
{1, 2}
邏輯運算符
-
邏輯運算符and、or、not常用來連接條件表達式構成更加復雜的條件表達式,並且and和or具有惰性求值或邏輯短路的特點;註意:運算符and和or並不一定會返回True或False,而是得到最後一個被計算的表達式的值,但是運算符not一定會返回True或False。
>>> 3 > 5 and a > 5
False
>>> 3 > 5 or a > 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ‘a‘ is not defined
>>> 3 < 5 or a > 5
True
>>> 3 and 6
6
>>> 3 and 5 > 2
True
>>> 3 not in [1, 2, 3]
False
>>> 3 is not 5
True
>>> not 3
False
>>> not 0
True
>>>
矩陣運算符@
>>> import numpy # numpy是用於科學計算的Python擴展庫
>>> x = numpy.ones(3) # ones()函數用於生成全1矩陣,參數表示矩陣大小
>>> m = numpy.eye(3) * 3 # eye()函數用於生成單位矩陣
>>> m[0,2] = 5
>>> m[2,0] = 3
>>> x
array([1., 1., 1.])
>>> m
array([[3., 0., 5.],
[0., 3., 0.],
[3., 0., 3.]])
>>> x@m
array([6., 3., 8.])
python_運算符與表達式