所有數(shù)字類型可進(jìn)行以下操作:
為勐臘等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及勐臘網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、網(wǎng)站制作、勐臘網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!操作 | 描述 |
---|---|
x + y | 加法 |
x - y | 減法 |
x * y | 乘法 |
x / y | 除法 |
x // y | 截斷除法 |
x ** y | 乘方(x的y次方) |
x % y | 取模(x mod y) |
-x | 一元減法 |
+x | 一元加法 |
截斷除法運(yùn)算符"//",也稱為地板除法,把結(jié)果截取為一個整數(shù),并且整數(shù)和浮點數(shù)均可應(yīng)用。取模運(yùn)算符返回的是x // y的余數(shù),對于浮點數(shù),取模運(yùn)算符返回的是x // y的浮點余數(shù)。對于復(fù)數(shù),取模和截斷除法運(yùn)算符是無效的。
以下移位和按位邏輯運(yùn)算符只能應(yīng)用于整數(shù):
操作 | 描述 |
---|---|
x << y | 左移 |
x >> y | 右移 |
x & y | 按位與 |
x | y | 按位或 |
x ^ y | 按位異或 |
~x | 按位求反 |
以下內(nèi)置函數(shù)支持所有數(shù)字類型:
操作 | 描述 |
---|---|
abs(x) | 絕對值 |
divmod(x,y) | 返回(x // y, x % y) |
pow(x, y [, modulo]) | 返回(x ** y) % module |
round(x [,n]) | 四舍五入為接近的10^-n的倍數(shù)(只返回浮點數(shù)) |
abs()函數(shù)返回數(shù)字的絕對值。divmod()函數(shù)返回除法操作的商和余數(shù),只對非復(fù)數(shù)有效。pow()函數(shù)可以用于代替**運(yùn)算符。round()函數(shù)將一個浮點數(shù)x四舍五入為最近的10^-n的倍數(shù),如果省略n,它將被設(shè)為0.
以下比較運(yùn)算符具有標(biāo)準(zhǔn)的數(shù)學(xué)解釋,返回值為布爾型的True或False:
操作 | 描述 |
---|---|
x < y | 小于 |
x > y | 大于 |
x == y | 等于 |
x != y | 不等于 |
x >= y | 大于等于 |
x <= y | 小于等于 |
比較運(yùn)算符可以連在一起,比如x < y < z。這類表達(dá)式等價于x < y and y < z。不允許對復(fù)數(shù)進(jìn)行比較,否則會引發(fā)TypeError異常。只有當(dāng)操作數(shù)屬于同一類型時,對這些操作數(shù)進(jìn)行運(yùn)算才是有效的。對于內(nèi)置數(shù)字,Python將進(jìn)行強(qiáng)制類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則如下:
1) 如果操作數(shù)之一為復(fù)數(shù),則將另一個操作數(shù)也轉(zhuǎn)換為復(fù)數(shù)。
2) 如果操作數(shù)之一為浮點數(shù),則將另一個操作數(shù)也轉(zhuǎn)換為浮點數(shù)。
3) 否則,兩個操作數(shù)必須同時為整數(shù),不需要進(jìn)行轉(zhuǎn)換。
?
序列類型(包括字符串、列表和元組)支持的運(yùn)算符如下所示:
操作 | 描述 |
---|---|
s + r | 連接 |
s n, n s | 制作s的n個副本,n為整數(shù) |
v1, v2..., vn = s | 變量解包 |
s[i] | 索引 |
s[i:j] | 切片 |
s[i:j:stride] | 擴(kuò)展切片 |
x in s, x not in s | 從屬關(guān)系 |
for x in s: | 迭代 |
all(s) | 如果s中的所有項都為True,則返回False |
any(s) | 如果s中的任意項為True,則返回True |
len(s) | 長度 |
min(s) | s中的最小項 |
max(s) | s中的大項 |
sum(s [, initial]) | 具有可選初始值的項的和 |
"+"運(yùn)算符用于連接相同類型的兩個序列。s * n運(yùn)算符制作一個序列的n個副本。但是,這些副本僅僅是淺復(fù)制。
所有序列都可以被解包為一列變量名稱,例如:
items = [3, 4, 5]
x, y, z = items
datetime = ((5, 19, 2008), (10, 30, "am"))
(month, day, year), (hour, minute, am_pm) = datetime
將值解包到變量中時,變量的個數(shù)必須嚴(yán)格匹配序列中元素的個數(shù)。另外,變量的結(jié)構(gòu)也必須匹配序列的結(jié)構(gòu)。
索引運(yùn)算符s[n]返回序列中的第n個對象,而s[0]是第一個對象。使用負(fù)數(shù)索引可以獲取序列尾部的字符。試圖訪問超出邊界的元素將引發(fā)IndexError異常。
切片運(yùn)算符s[i:j]從s中提取一個子序列,它所包含的元素索引k的范圍是i <= k < j。切片運(yùn)算符支持使用負(fù)數(shù)索引,并且假定它關(guān)聯(lián)到序列的結(jié)尾。
x in s運(yùn)算符測試對象x是否在序列s中,返回值為True或False。類似地,x not in s 運(yùn)算符測試x是否不在序列s中。對于字符串對象,in和not in運(yùn)算符接受子字符串。比如:" 'hello' in 'hello world' "。需要注意的是,in運(yùn)算符不支持通配符或任意類別的模式匹配。
for x in s運(yùn)算符用于迭代序列的所有元素。len(s)返回序列中元素的個數(shù)。min(s)和max(s)分別返回一個序列中的最小值和大值。sum(s)用于對s中的所有項求和,但只在其中的各項代表數(shù)字時有效。
字符串和元組是不可變的,創(chuàng)建后不能修改。列表可通過以下運(yùn)算符進(jìn)行修改:
操作 | 描述 |
---|---|
s[i] = x | 索引賦值 |
s[i:j] = r | 切片賦值 |
s[i:j:stride] = r | 切片擴(kuò)展賦值 |
del s[i] | 刪除一個元素 |
del s[i:j] | 刪除一個切片 |
del s[i:j:stride] | 刪除一個擴(kuò)展切片 |
s[i] = x運(yùn)算符將列表的元素i修改為引用對象x,同時增加x的引用計數(shù)。負(fù)索引值將關(guān)聯(lián)到列表結(jié)尾,試圖給超出范圍的索引賦值將引發(fā)IndexError異常。切片賦值運(yùn)算符s[i:j] = r將使用序列r中的元素替換元素k,其中k的范圍是i <= k < j。如果有必要,將對序列s進(jìn)行擴(kuò)展或收縮,以便容納r中的所有元素,例如:
a = [1, 2, 3, 4, 5]
a[1] = 6 # a = [1, 6, 3, 4, 5]
a[2:4] = [10, 11] # a = [1, 6, 10, 11, 5]
a[3:4] = [-1, -2, -3] # a = [1, 6, 10, -1, -2, -3, 5]
a[2:] = [0] # a = [1, 6, 0]
切片賦值可以提供一個可選的步進(jìn)參數(shù)。但這種行為受到的限制更大,右邊的參數(shù)必須與要替換切片的元素個數(shù)完全相同。
del s[i]運(yùn)算符從列表中刪除元素i,同時減少它的引用計數(shù)。del s[i:j]刪除切片內(nèi)的所有元素。切片刪除也可以指定步進(jìn)參數(shù)。
使用運(yùn)算符<、>、<=、>=、==、!=可以對序列進(jìn)行比較。比較兩個序列時,首先比較每個序列的第一個元素。如果它們不同,即可以得出結(jié)論。如果它們相同,就繼續(xù)比較。如果a是b的子序列,那么a < b。
?
取模運(yùn)算符(s % d)生成格式化的字符串,其中s是一個格式字符串,而d是一個對象元組或映射對象(字典)。格式字符串包含兩類對象:普通字符和轉(zhuǎn)換說明符,將使用可表示相關(guān)元組或映射中元素的格式化字符串來替換這些轉(zhuǎn)換說明符。如果d是一個元組,轉(zhuǎn)換說明符的個數(shù)必須與d中對象的個數(shù)保持一致。如果d是一個映射,每個轉(zhuǎn)換說明符都必須與映射中的一個有效鍵名關(guān)聯(lián)。每個轉(zhuǎn)換說明符都以%開始,如下表:
字符 | 輸出格式 |
---|---|
d, i | 十進(jìn)制整數(shù)或長整數(shù) |
u | 無符號整數(shù)或長整數(shù) |
o | 八進(jìn)制整數(shù)或長整數(shù) |
x | 十六進(jìn)制整數(shù)或長整數(shù) |
X | 十六進(jìn)制整數(shù)(大寫字母) |
f | 浮點數(shù),如[-]m.dddddd |
e | 浮點數(shù),如[-]m.dddddd+(-)xx |
E | 浮點數(shù),如[-]m.dddddd+(-)xx |
g, G | 指數(shù)小于-4或更高精度時使用%e或%E,否則使用%f |
s | 字符串或任意對象 |
r | 同repr()生成的字符串 |
c | 單個字符 |
% | 字面量% |
在%字符和轉(zhuǎn)換字符之間,可以出現(xiàn)以下修飾符,并且只能按照以下順序出現(xiàn):
1) 位于括號中的一個鍵名,用于從映射對象中選出一個具體項。
2) -,左對齊標(biāo)志。默認(rèn)是右對齊。
3) +,表示應(yīng)該包含數(shù)字符號。
4) 0,表示一個零填充。
5) 一個指定最小自動寬度的數(shù)字。
6) 一個小數(shù)點,用于按照精度分割字段寬度。
7) 一個數(shù)字,指定要打印字符串中的大字符個數(shù),浮點數(shù)中小數(shù)點之后的位數(shù),或者整數(shù)的最小位數(shù)。
星號"*"字符用于在任意寬度的字段中替換數(shù)字。
以下代碼給出一些例子:
a = 42
b = 13.142783
c = "hello"
d = {'x':13, 'y':1.54321, 'z': 'world'}
e = 5628398123741234
r = "a is %d" % a # r = "a is 42"
r = "%10d %f" % (a, b) # r = " 42 13.142783"
r = "%+010d %E" % (a, b) # r = "+0000000042 1.314278E+01"
r = "%(x)-10d %(y)0.3g" % d # r = "13 1.54"
r = "%0.4s %s" % (c, d['z']) # r = "hell world"
r = "%*.*f" % (5, 3, b) # r = "13.143"
r = "e = %d" % e # r = "e = 5628398123741234"
字符串格式化有一種更加高級的形式,即使用字符串的s.format(args,kwargs)方法。該方法收集位置參數(shù)和關(guān)鍵字參數(shù)的任意集合,并使用它們的值來替換s中嵌入的占位符。例如:
r = "{0} {1} {2}".format{'GOOG', 100, 490.91}
r = "{name} {shares} {price}".format{name='GOOG', shares=100, price=490.10}
如果要輸出一個"{"或"}",必須使用"{{"或"}}"的形式。使用占位符還可以執(zhí)行其他索引和屬性查找,例如:
stock = {
'name': 'GOOG',
'shares': 100,
'price': 490.91
}
r = "{0[name]} {0[shares]} {0[price]}".format(stock)
這些擴(kuò)展中只允許使用名稱,而不支持任意的表達(dá)式、方法調(diào)用和其他操作。另外,還可以指定格式說明符。方法是用一個冒號":"給每個占位符添加可選的格式說明符,例如:
r = "{name:8} {shares:8d} {price:8.2f}".format(name='GOOG', shares=100, price=490.10)
說明符的一般格式是[fill[align]][sign][0][width][.pricision][type],[ ]中的每個部分都是可選的。width說明符指定要使用的最小字段寬度,align說明符的值可取"<"、">"或"^"之一,分別代表在字段中左對齊、右對齊和居中對齊。fill是一個可選的填充字符,用于填充空白。type說明符表示數(shù)據(jù)的類型。格式說明符的sign部分是"+"、"-"或空格" "之一,表示符號。說明符的precision部分用于為十進(jìn)制數(shù)提供精度位置。
?
字典提供名稱和對象之間的映射,它支持的操作如下:
操作 | 描述 |
---|---|
x = d[k] | 通過鍵進(jìn)行索引 |
d[k] = x | 通過鍵進(jìn)行賦值 |
del d[k] | 通過鍵刪除一項 |
k in d | 測試某個鍵是否存在 |
len(d) | 字典中的項數(shù) |
鍵的值可以是任意不可變對象,如字符串、數(shù)字和元組。另外,字典的鍵也可以是一列用逗號分開的值,例如:
d = {}
d[1, 2, 3] = "foo"
d[1, 0, 3] = "bar"
# 等價于
d[(1, 2, 3)] = "foo"
d[(1, 0, 3)] = "bar"
set和frozenset類型支持大量常見的集合操作,如下所示:
操作 | 描述 |
---|---|
s | t | s和t的并集 |
s & t | s和t的交集 |
s - t | 求差集 |
s ^ t | 求對稱差集 |
len(s) | 集合中項數(shù) |
max(s) | 大值 |
min(s) | 最小值 |
并集、交集和差集操作的結(jié)果與最左邊的操作數(shù)具有相同類型。例如,如果s是一個frozenset,而t是一個set,那么結(jié)果的類型將是frozenset。
?
Python提供的增量賦值運(yùn)算符如下所示:
操作 | 描述 |
---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x //= y | x = x // y |
x **= y | x = x ** y |
x %= y | x = x % y |
x &= y | x = x & y |
x |= y | x = x | y |
x ^= y | x = x ^ y |
x >>= y | x = x >> y |
x <<= y | x = x << y |
增量賦值不會違反可變性或者原地修改對象。因此,執(zhí)行代碼 x += y時,將創(chuàng)建一個值為x + y的全新對象x。
?
點"."運(yùn)算符用于訪問對象的屬性,例如
foo.x = 3
print(foo.y)
a = foo.bar(3, 4, 5)
表達(dá)式中可以出現(xiàn)多個點運(yùn)算符,如foo.y.a.b。點運(yùn)算符還可以用于函數(shù)的中間結(jié)果,如a = foo.bar(3, 4, 5).spam。
f(args)運(yùn)算符用于調(diào)用f上的函數(shù)。函數(shù)的每個參數(shù)都是一個表達(dá)式。在調(diào)用函數(shù)前,將從左到右對所有參數(shù)表達(dá)式進(jìn)行求值,這有時稱為應(yīng)用序求值。使用functools模塊中的partial()函數(shù)可以對函數(shù)參數(shù)進(jìn)行部分求值,例如:
def foo(x, y, z):
return x + y + z
from functools import partial
f = partial(foo, 1, 2) # 為foo的參數(shù)x和y提供值
f(3) # 調(diào)用foo(1, 2, 3)
partial()函數(shù)對一個函數(shù)的某些參數(shù)求值,返回一個稍后可以調(diào)用的對象,以提供余下的參數(shù)。函數(shù)參數(shù)的部分求值與叫做科里化的過程關(guān)系十分緊密。所謂科里化的機(jī)制是:把一個帶有多個參數(shù)的函數(shù)分解為一系列函數(shù),其中每個函數(shù)帶有其中一個參數(shù)。
?
有時必須在內(nèi)置類型之間執(zhí)行轉(zhuǎn)換,只需用類型名稱作為函數(shù)。另外,還有幾個內(nèi)置函數(shù)可用于執(zhí)行特殊類別的轉(zhuǎn)換。所有這些函數(shù)均返回一個新對象,該對象代表了轉(zhuǎn)換后的值。
函數(shù) | 描述 |
---|---|
int(x [, base]) | 將x轉(zhuǎn)換為一個整數(shù)。如果x是一個字符串,base用于指定基數(shù) |
float(x) | 將x轉(zhuǎn)換為一個浮點數(shù) |
Complex(real [, imag]) | 創(chuàng)建一個復(fù)數(shù) |
str(x) | 將對象x轉(zhuǎn)換為字符串表示 |
repr(x) | 將對象x轉(zhuǎn)換為一個表達(dá)式字符串 |
format(x [, format_spec]) | 將對象x轉(zhuǎn)換為格式化的字符串 |
eval(str) | 對字符串求值并返回對象 |
tuple(s) | 將s轉(zhuǎn)換為元組 |
list(s) | 將s轉(zhuǎn)換為列表 |
set(s) | 將s轉(zhuǎn)換為集合 |
dict(s) | 創(chuàng)建字典。d必須是(key, value)元組的序列 |
frozenset(s) | 將s轉(zhuǎn)換為不可變集合 |
chr(x) | 將整數(shù)轉(zhuǎn)換為字符串 |
ord(x) | 將字符轉(zhuǎn)換為其整數(shù)值 |
hex(x) | 將整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串 |
bin(x) | 將整數(shù)轉(zhuǎn)換為二進(jìn)制字符串 |
oct(x) | 將整數(shù)轉(zhuǎn)換為八進(jìn)制字符串 |
需要注意的是,str()和reprt()函數(shù)返回的結(jié)果可能不同。repr()函數(shù)通常會創(chuàng)建一個表達(dá)式字符串,可以使用eval()對它求值以重新創(chuàng)建對象。ord()函數(shù)返回一個字符的整數(shù)順序值。在Unicode中,這個值就是一個整數(shù)代碼點。chr()函數(shù)用于將整數(shù)轉(zhuǎn)換成字符。在創(chuàng)建容器的函數(shù)中,如list()、tuple()、set()等,參數(shù)可以是支持迭代的任意對象,而迭代生成的所有項將用于填充要創(chuàng)建的對象。
?
and、or和not關(guān)鍵字構(gòu)成了布爾表達(dá)式。這些運(yùn)算符的行為如下所示:
運(yùn)算符 | 描述 |
---|---|
x or y | 如果x為false,則返回y;否則返回x |
x and y | 如果x為false,則返回x;否則返回y |
not x | 如果x為false,則返回1;否則返回0 |
使用表達(dá)式來判斷True或False值時,True、任意非零數(shù)字、非空字符串、列表、元組或字典都將返回True,而False、零、None和空的列表、元組和字典都將返回False。布爾表達(dá)式從左至右求值,而且只有需要時才會計算右邊的操作數(shù)。
?
等于運(yùn)算符(x == y)可以測試x和y的值是否相等。對于列表和元組,只有其中的所有元素都相等,它們才相等。而對于字典,只有當(dāng)x和y的鍵都相同,而且鍵相同的所有對象的值都相等才會返回True。兩個集合相等的條件是用==運(yùn)算符進(jìn)行比較時,它們具有相同的元素。
身份運(yùn)算符(x is y和x is not y)可以測試兩個對象是否引用了內(nèi)存中的同一個對象。一般而言,x == y,但x is not y。
比較操作也可以在兩個非兼容對象之間進(jìn)行,如一個文件和一個浮點數(shù),但返回結(jié)果是任意的,可能沒有意義。另外也可能導(dǎo)致異常。
?
Python運(yùn)算符的操作順序如下表:
運(yùn)算符 | 名稱 |
---|---|
(...), [...], {...} | 創(chuàng)建元組、列表和字典 |
s[i], s[i:j] | 索引和切片 |
s.attr | 屬性 |
f(...) | 函數(shù)調(diào)用 |
+x, -x, ~x | 一元運(yùn)算符 |
x ** y | 乘方(從右至左運(yùn)算) |
x * y, x / y, x // y, x % y | 乘法、除法、地板除法、取模 |
x + y, x - y | 加法、減法 |
x << y, x >> y | 移位 |
x & y | 按位與 |
x ^ y | 按位異或 |
x | y | 按位或 |
x < y, x <= y | 比較、身份和序列成員檢查 |
x > y, x >= y | |
x == y, x != y | |
x is y, x is not y | |
x in s, x not in s | |
not x | 邏輯非 |
x and y | 邏輯與 |
x or y | 邏輯或 |
lambda args: expr | 匿名函數(shù) |
運(yùn)算順序并非由上表的x和y的類型決定。因此,即便是用戶自定義對象,也可以重新定義每個運(yùn)算符。
?
常見的編程模式是根據(jù)表達(dá)式的結(jié)果,有條件地進(jìn)行賦值,例如:
if a <= b:
minvalue = a
else:
minvalue = b
使用條件表達(dá)式可以簡化這段代碼,例如:
minvalue = a if a <= b else b
在這類表達(dá)式中,首先求值的是中間的條件。如果結(jié)果為True,再對if語句左面的表達(dá)式求值,否則就會對else后面的表達(dá)式求值。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享標(biāo)題:[Python]運(yùn)算符與表達(dá)式-創(chuàng)新互聯(lián)
文章出自:http://muchs.cn/article42/pihec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站營銷、小程序開發(fā)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容