做(zuò)自(zì)由與創造的先行(xíng)者

Types: 6. Sequence Types — str, unicode, list, tuple, bytear

Python開(kāi)發手冊

6. Sequence Types — str, unicode, list, tuple, bytearray, buffer, xrange

有七種序列類型:字符串,Unicode字符串,列表,元組,字節數(shù)組,緩沖區(qū)和(hé)xrange對象。

對于其他(tā)容器,請(qǐng)參閱內(nèi)置dict()和(hé)set()函數(shù)以及collections模塊。

字符串文字用單引号或雙引号寫入:'xyzzy',"frobozz"。有關字符串文字的更多信息,請(qǐng)參閱字符串文字。Unicode字符串很(hěn)像字符串,但(dàn)是在語法中使用前面的'u'字符指定:u'abc',u"def"。除了(le)這(zhè)裏描述的功能(néng)之外(wài),字符串方法部分中還描述了(le)特定于字符串的方法。列表用方括号構成,用逗号分隔項目:[a, b, c]。元組由逗号運算符(不在方括号內(nèi))構造,帶或不帶括号括起來,但(dàn)空元組必須帶括号括起來的括号,如(rú)a, b, c或()。單個元組元組必須具有尾随逗号,例如(rú)(d,)。

Bytearray對象是使用內(nèi)置函數(shù)創建的bytearray()。

緩沖區(qū)對象不直接受Python語法支持,但(dàn)可(kě)以通(tōng)過調用內(nèi)置函數(shù)來創建buffer()。他(tā)們不支持連接或重複。

xrange類型的對象類似于緩沖區(qū),因為(wèi)沒有特定的語法來創建它們,但(dàn)是它們是使用xrange()函數(shù)創建的。它們不支持切片,串聯或重複使用in,not in,min()或max()對它們是無效的。

大多數(shù)序列類型支持以下(xià)操作(zuò)。在in和(hé)not in操作(zuò)具有比較操作(zuò)相同的優先級。在+與*操作(zuò)具有相同的優先級對應的數(shù)字運算。[3]為(wèi)可(kě)變序列類型提供了(le)其他(tā)方法。

此表列出按升序優先級排序的序列操作(zuò)。在表中,s和(hé)t是相同類型的序列; n,i和(hé)j是整數(shù):

Operation

結果

筆(bǐ)記

x in s

如(rú)果s的項等于x,則為(wèi)真,否則為(wèi)False

(1)

x不在s中

假如(rú)一(yī)個s的項等于x,則為(wèi)假,否則為(wèi)真

(1)

s + t

s和(hé)t的連接

(6)

s * n,n * s

相當于将n次添加到自(zì)身

(2)

si

第s項,起源0

(3)

如(rú)果:J-

從(cóng)我到j的切片

(3)(4)

如(rú)果:J-ķ

從(cóng)步驟k的i到j的片段

(3)(5)

隻有(一(yī))

s的長(cháng)度

分鐘(zhōng))

s的最小項

MAX(S)

最大的項目

s.index(x)的

s中第一(yī)次出現x的索引

s.count(x)的

s中出現x的總次數(shù)

序列類型也支持比較。具體來說,元組和(hé)列表通(tōng)過比較相應的元素按字典順序進行(xíng)比較。這(zhè)意味着為(wèi)了(le)比較相等,每個元素必須相等并且兩個序列必須是相同類型并具有相同長(cháng)度。(有關完整的詳細信息,請(qǐng)參閱語言參考中的比較。)

Notes:

當s是一(yī)個字符串或Unicode字符串對象時(shí)in,not in操作(zuò)就像一(yī)個子串測試一(yī)樣。在2.3之前的Python版本中,x必須是長(cháng)度為(wèi)1的字符串。在Python 2.3及更高版本中,x可(kě)以是任意長(cháng)度的字符串。

小于n的值0被視(shì)為(wèi)0(其産生與s相同類型的空序列)。請(qǐng)注意,序列中的項目不會被複制; 它們被多次引用。這(zhè)經常困擾着新的Python程序員(yuán); 考慮:列表= [[]] * 3 >>>列表[[],[],[]] >>> lists0.append(3)>>>列表[3,3]發生了(le)什麽[[]]是一(yī)個包含一(yī)個空列表的單元素列表,所以這(zhè)三個元素[[]] * 3都(dōu)是對這(zhè)個單個空列表的引用。修改任何元素lists修改這(zhè)個單子列表。您可(kě)以通(tōng)過這(zhè)種方式創建不同列表的列表:lists = [[] for i in range(3)] >>> lists0.append(3)>>> lists1.append(5)>>> lists2.append(7 )>>> lists [3,5,7]常見(jiàn)問(wèn)題解答(dá)條目中提供了(le)進一(yī)步說明(míng)如(rú)何創建多維列表?。

如(rú)果i或j是負數(shù),則該索引是相對于序列s的末尾:len(s) + i或被len(s) + j替換。但(dàn)請(qǐng)注意,-0依然如(rú)此0。

的切片小号從(cóng)我到Ĵ被定義為(wèi)物(wù)品的具有索引序列ķ使得i <= k < j。如(rú)果我或j大于len(s),請(qǐng)使用len(s)。如(rú)果我被省略或者None使用0。如(rú)果省略了(le)j,或者None使用len(s)。如(rú)果我大于或等于j,則切片為(wèi)空。

步驟k中從(cóng)i到j的s片段被定義為(wèi)具有這(zhè)樣的索引的項目序列。換句話說,在指數(shù),,,等等,停車時(shí)Ĵ達到(但(dàn)絕不包括Ĵ)。當k是正數(shù)時(shí),如(rú)果它們更大,則i和(hé)j會減少(shǎo)。當k是負數(shù)時(shí),如(rú)果i和(hé)j更大,則i和(hé)j減小。如(rú)果我或j被省略或x = i + n*k0 <= n < (j-i)/kii+ki+2*ki+3*klen(s)len(s) - 1None,它們變成了(le)“終點”值(終點取決于k的符号)。請(qǐng)注意,k不能(néng)為(wèi)零。如(rú)果k是None,它被視(shì)為(wèi)像1。

CPython實現細節:如(rú)果s和(hé)t都(dōu)是字符串,則一(yī)些Python實現(例如(rú)CPython)通(tōng)常可(kě)以為(wèi)窗體s = s + t或窗體的賦值執行(xíng)就地(dì)優化s += t。如(rú)果适用,這(zhè)種優化使得二次運行(xíng)時(shí)間(jiān)不太可(kě)能(néng)。這(zhè)種優化是版本和(hé)實現相關的。對于性能(néng)敏感的代碼,最好使用str.join()确保不同版本和(hé)實現之間(jiān)一(yī)緻的線性級聯性能(néng)的方法。

在版本2.4中更改:以前,字符串連接從(cóng)來沒有發生過。

6.1。字符串方法

下(xià)面列出了(le)8位字符串和(hé)Unicode對象都(dōu)支持的字符串方法。其中一(yī)些也可(kě)用于bytearray對象。

另外(wài),Python的字符串支持序列類型中描述的序列類型方法 - str,unicode,list,tuple,bytearray,buffer,xrange部分。要(yào)輸出格式化的字符串,請(qǐng)使用%字符串格式操作(zuò)部分中描述的模闆字符串或運算符。另請(qǐng)參閱re模塊,了(le)解基于正則表達式的字符串函數(shù)。

str.capitalize()

返回字符串的一(yī)個副本,其首字母大寫,其餘的小寫。

對于8位字符串,此方法是區(qū)域設置相關的。

str.center(width[, fillchar])

返回以一(yī)個長(cháng)度寬度的字符串為(wèi)中心。填充是使用指定的fillchar完成的(默認為(wèi)空格)。

在版本2.4中更改:支持fillchar參數(shù)。

str.count(sub[, start[, end]])

返回範圍start,end 中子串sub的非重疊次數(shù)。可(kě)選參數(shù)開(kāi)始和(hé)結束被解釋為(wèi)切片符号。

str.decode([encoding[, errors]])

使用注冊編碼的編碼解碼器解碼字符串。編碼默認為(wèi)默認的字符串編碼。可(kě)能(néng)會給出錯誤來設置不同的錯誤處理方案。默認值是'strict',意味着編碼錯誤會增加UnicodeError。其他(tā)可(kě)能(néng)的值是'ignore','replace'并且通(tōng)過注冊的任何其他(tā)名稱codecs.register_error(),請(qǐng)參見(jiàn)編解碼器基類。

2.2版本中的新功能(néng)。

在版本2.3中進行(xíng)了(le)更改:添加了(le)對其他(tā)錯誤處理方案的支持。

在2.7版本中進行(xíng)了(le)更改:添加了(le)對關鍵字參數(shù)的支持。

str.encode([encoding[, errors]])

返回字符串的編碼版本。默認編碼是當前的默認字符串編碼。可(kě)能(néng)會給出錯誤來設置不同的錯誤處理方案。錯誤的默認值是'strict',這(zhè)意味着編碼錯誤會引發一(yī)個錯誤UnicodeError。其他(tā)可(kě)能(néng)的值'ignore','replace','xmlcharrefreplace','backslashreplace'并通(tōng)過注冊的任何其他(tā)名稱codecs.register_error(),請(qǐng)參見(jiàn)編解碼基礎類。有關可(kě)能(néng)的編碼列表,請(qǐng)參見(jiàn)标準編碼部分。

2.0版本中的新功能(néng)。

在版本2.3中進行(xíng)了(le)更改:添加了(le)對'xmlcharrefreplace'和(hé)'backslashreplace'和(hé)其他(tā)錯誤處理方案的支持。

在2.7版本中進行(xíng)了(le)更改:添加了(le)對關鍵字參數(shù)的支持。

str.endswith(suffix[, start[, end]])

返回True字符串是否與指定的結束後綴,否則返回False。後綴也可(kě)以是後綴的元組來查找。随着可(kě)選啓動,測試開(kāi)始在那(nà)個位置。選擇結束時(shí),停止在該位置進行(xíng)比較。

在版本2.5中更改:接受元組作(zuò)為(wèi)後綴。

str.expandtabs([tabsize])

返回字符串的副本,其中所有制表符由一(yī)個或多個空格替換,具體取決于當前列和(hé)給定制表符大小。選項卡位置出現在每個制表符大小字符中(默認值為(wèi)8,在列0,8,16等處提供制表位置)。要(yào)擴展字符串,當前列設置為(wèi)零,字符串逐個檢查。如(rú)果該字符是一(yī)個制表符(\t),則結果中會插入一(yī)個或多個空格字符,直到當前列等于下(xià)一(yī)個制表符位置。(制表符本身不被複制。)如(rú)果該字符是換行(xíng)符(\n)或返回(\r),它被複制并且當前列被重置為(wèi)零。任何其他(tā)字符都(dōu)将被不變地(dì)複制,而當前列增加1,無論打印時(shí)字符如(rú)何表示。

>>> '01\t012\t0123\t01234'.expandtabs()

'01 012 0123 01234'

>>> '01\t012\t0123\t01234'.expandtabs(4)

'01 012 0123 01234'

複制

str.find(sub[, start[, end]])

返回切片中找到substring 子字符串的最低(dī)索引s[start:end]。可(kě)選參數(shù)開(kāi)始和(hé)結束被解釋為(wèi)切片符号。-1如(rú)果未找到子項,則返回。

注釋

find()隻有在您需要(yào)知道(dào)sub的位置時(shí)才應該使用該方法。要(yào)檢查sub是否是子字符串,請(qǐng)使用in運算符:

>>> 'Py' in 'Python'

True

複制

str.format(*args, **kwargs)

執行(xíng)字符串格式化操作(zuò)。調用此方法的字符串可(kě)以包含由大括号分隔的文本文本或替換字段{}。每個替換字段包含位置參數(shù)的數(shù)字索引或關鍵字參數(shù)的名稱。返回字符串的副本,其中每個替換字段将替換為(wèi)相應參數(shù)的字符串值。

>>> "The sum of 1 + 2 is {0}".format(1+2)

'The sum of 1 + 2 is 3'

複制

請(qǐng)參閱格式字符串語法以獲取可(kě)在格式字符串中指定的各種格式選項的說明(míng)。

這(zhè)種字符串格式化方法是Python 3中的新标準,應優先%于新代碼中字符串格式化操作(zuò)中描述的格式。

2.6版本中的新功能(néng)。

str.index(sub[, start[, end]])

就像find(),但(dàn)ValueError在沒有找到子字符串時(shí)引發。

str.isalnum()

如(rú)果字符串中的所有字符都(dōu)是字母數(shù)字并且至少(shǎo)有一(yī)個字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.isalpha()

如(rú)果字符串中的所有字符都(dōu)是字母并且至少(shǎo)有一(yī)個字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.isdigit()

如(rú)果字符串中的所有字符都(dōu)是數(shù)字并且至少(shǎo)有一(yī)個字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.islower()

如(rú)果字符串中的所有套用字符[4]都(dōu)是小寫,并且至少(shǎo)有一(yī)個套用字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.isspace()

如(rú)果字符串中隻有空格字符,并且至少(shǎo)有一(yī)個字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.istitle()

如(rú)果字符串是一(yī)個标題字符串并且至少(shǎo)有一(yī)個字符,則返回true,例如(rú),大寫字符隻能(néng)跟在未寫入的字符之後,而小寫字母隻能(néng)在已封裝的字符之後。否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.isupper()

如(rú)果字符串中的所有套用字符[4]都(dōu)是大寫且至少(shǎo)有一(yī)個套用字符,則返回true,否則返回false。

對于8位字符串,此方法是區(qū)域設置相關的。

str.join(iterable)

返回一(yī)個字符串,它是可(kě) 叠代叠代中字符串的串聯。元素之間(jiān)的分隔符是提供此方法的字符串。

str.ljust(width[, fillchar])

以長(cháng)度寬度的字符串返回左對齊的字符串。填充是使用指定的fillchar完成的(默認為(wèi)空格)。如(rú)果寬度小于或等于,則返回原始字符串len(s)。

在版本2.4中更改:支持fillchar參數(shù)。

str.lower()

返回字符串的一(yī)個副本,并将所有裝入字符的字符[4]轉換為(wèi)小寫字母。

對于8位字符串,此方法是區(qū)域設置相關的。

str.lstrip([chars])

返回删除前導字符的字符串的副本。的字符參數(shù)是要(yào)除去的字符串指定的字符集。如(rú)果省略或者None,chars參數(shù)默認删除空格。該字符參數(shù)不是前綴; 相反,其值的所有組合都(dōu)被剝離:

>>> ' spacious '.lstrip()

'spacious '

>>> 'www.example.com'.lstrip('cmowz.')

'example.com'

複制

在版本2.2.2中更改:支持chars參數(shù)。

str.partition(sep)

在sep第一(yī)次出現時(shí)拆分字符串,并返回包含分隔符之前的部分,分隔符本身和(hé)分隔符之後的部分的三元組。如(rú)果未找到分隔符,則返回包含該字符串本身的三元組,然後返回兩個空字符串。

2.5版本中的新功能(néng)。

str.replace(old, new[, count])

返回所有出現的舊(jiù)字符串替換為(wèi)新字符串的副本。如(rú)果給出可(kě)選的參數(shù)計數(shù),則僅替換第一(yī)個計數(shù)事件。

str.rfind(sub[, start[, end]])

返回找到substring 子字符串的最高索引,這(zhè)樣sub就包含在其中s[start:end]。可(kě)選參數(shù)開(kāi)始和(hé)結束被解釋為(wèi)切片符号。返回-1失敗。

str.rindex(sub[, start[, end]])

像rfind()但(dàn)ValueError子字符串子未找到時(shí)引發。

str.rjust(width[, fillchar])

以字符串長(cháng)度寬度返回右對齊的字符串。填充是使用指定的fillchar完成的(默認為(wèi)空格)。如(rú)果寬度小于或等于,則返回原始字符串len(s)。

在版本2.4中更改:支持fillchar參數(shù)。

str.rpartition(sep)

在最後出現的sep處拆分字符串,并返回包含分隔符之前的部分,分隔符本身和(hé)分隔符之後的部分的三元組。如(rú)果未找到分隔符,則返回包含兩個空字符串的三元組,然後返回字符串本身。

2.5版本中的新功能(néng)。

str.rsplit([sep[, maxsplit]])

使用sep作(zuò)為(wèi)分隔符字符串,返回字符串中單詞的列表。如(rú)果給出maxsplit,則最多maxsplit分裂,最右邊的分裂。如(rú)果沒有指定sep或者None任何空格字符串是分隔符。除了(le)從(cóng)右邊分開(kāi)外(wài),rsplit()其行(xíng)為(wèi)split()如(rú)下(xià)所述。

2.4版本中的新功能(néng)。

str.rstrip([chars])

返回删除了(le)尾随字符的字符串副本。的字符參數(shù)是要(yào)除去的字符串指定的字符集。如(rú)果省略或者None,chars參數(shù)默認删除空格。該字符參數(shù)不是後綴; 相反,其值的所有組合都(dōu)被剝離:

>>> ' spacious '.rstrip()

' spacious'

>>> 'mississippi'.rstrip('ipz')

'mississ'

複制

在版本2.2.2中更改:支持chars參數(shù)。

str.split([sep[, maxsplit]])

使用sep作(zuò)為(wèi)分隔符字符串,返回字符串中單詞的列表。如(rú)果給出maxsplit,最多可(kě)以完成maxsplit分割(因此,列表最多隻有maxsplit+1元素)。如(rú)果未指定maxsplit或者-1,則分割數(shù)量沒有限制(所有可(kě)能(néng)的分割)。

如(rú)果給出了(le)sep,則連續分隔符不會分組在一(yī)起,并被視(shì)為(wèi)分隔空字符串(例如(rú),'1,,2'.split(',')返回['1', '', '2'])。該月的參數(shù)可(kě)以由多個字符(例如(rú),'1<>2<>3'.split('<>')返回['1', '2', '3'])。用指定的分隔符分割空字符串返回['']。

如(rú)果未指定sep或is None,則應用不同的分割算法:将連續空白的運行(xíng)視(shì)為(wèi)單個分隔符,并且如(rú)果字符串具有前導或尾随空白,則結果的開(kāi)始或結束将不包含空字符串。因此,用None分隔符分隔一(yī)個空字符串或一(yī)個隻包含空格的字符串會返回[]。

例如(rú),' 1 2 3 '.split()返回['1', '2', '3']并' 1 2 3 '.split(None, 1)返回['1', '2 3 ']。

str.splitlines([keepends])

返回字符串中行(xíng)的列表,在行(xíng)邊界處突破。此方法使用通(tōng)用換行(xíng)符方法來分割線條。除非換行(xíng)符不包括在結果列表中keepends,并給出正确的。

Python的認識"\r","\n"以及"\r\n"作(zuò)為(wèi)邊界線為(wèi)8位字符串。

例如(rú):

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()

['ab c', '', 'de fg', 'kl']

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)

['ab c\n', '\n', 'de fg\r', 'kl\r\n']

複制

與給定split()分隔符字符串sep時(shí)不同,此方法返回空字符串的空列表,并且終端行(xíng)分隔符不會導緻多餘的行(xíng):

>>> "".splitlines()

[]

>>> "One line\n".splitlines()

['One line']

複制

為(wèi)了(le)比較,split('\n')給出:

>>> ''.split('\n')

['']

>>> 'Two lines\n'.split('\n')

['Two lines', '']

複制

unicode.splitlines([keepends])

返回字符串中的行(xíng)列表,如(rú)str.splitlines()。但(dàn)是,Unicode方法在以下(xià)行(xíng)邊界上(shàng)分割,這(zhè)些行(xíng)邊界是8位字符串識别的通(tōng)用換行(xíng)符的超集。

表示

描述

\ n

換行(xíng)

\ r

回車

\ r \ n

回車+換行(xíng)

\ v或\ x0b

線條制表

\ f或\ x0c

換頁

\ X1C

文件分隔符

\ X1D

組分隔符

\ x1e

記錄分隔符

\ x85

下(xià)一(yī)行(xíng)(C1控制代碼)

\ u2028

線分隔符

\ u2029

段落分隔符

在版本2.7中更改:\v并\f添加到行(xíng)邊界列表中。

str.startswith(prefix[, start[, end]])

返回True字符串是否與開(kāi)始前綴,否則返回False。前綴也可(kě)以是要(yào)查找的前綴元組。使用可(kě)選啓動,測試字符串從(cóng)該位置開(kāi)始。使用可(kě)選結束時(shí),停止在該位置比較字符串。

在版本2.5中更改:接受元組作(zuò)為(wèi)前綴。

str.strip([chars])

返回删除前導字符和(hé)尾随字符的字符串副本。的字符參數(shù)是要(yào)除去的字符串指定的字符集。如(rú)果省略或者None,chars參數(shù)默認删除空格。該字符參數(shù)不是前綴或後綴; 相反,其值的所有組合都(dōu)被剝離:

>>> ' spacious '.strip()

'spacious'

>>> 'www.example.com'.strip('cmowz.')

'example'

複制

在版本2.2.2中更改:支持chars參數(shù)。

str.swapcase()

返回大寫字符轉換為(wèi)小寫字符串的副本,反之亦然。

對于8位字符串,此方法是區(qū)域設置相關的。

str.title()

返回字符串的字幕版本,其中字以大寫字符開(kāi)頭,其餘字符為(wèi)小寫字母。

該算法使用簡單的與語言無關的單詞作(zuò)為(wèi)連續字母組的定義。該定義在許多情況下(xià)都(dōu)有效,但(dàn)這(zhè)意味着收縮和(hé)占有者中的撇号會形成單詞邊界,這(zhè)可(kě)能(néng)不是理想的結果:

>>> "they're bill's friends from the UK".title()

"They'Re Bill'S Friends From The Uk"

複制

可(kě)以使用正則表達式構造撇号的解決方法:

>>> import re

>>> def titlecase(s):

... return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",

... lambda mo: mo.group(0)[0].upper() +

... mo.group(0)[1:].lower(),

... s)

...

>>> titlecase("they're bill's friends.")

"They're Bill's Friends."

複制

對于8位字符串,此方法是區(qū)域設置相關的。

str.translate(table[, deletechars])

返回删除可(kě)選參數(shù)deletechars中出現的所有字符的字符串副本,其餘字符已通(tōng)過給定的轉換表映射,該轉換表必須是長(cháng)度為(wèi)256的字符串。

您可(kě)以使用模塊中的maketrans()幫助器功能(néng)string來創建轉換表。對于字符串對象,請(qǐng)将表參數(shù)設置None為(wèi)僅用于删除字符的翻譯:

>>> 'read this short text'.translate(None, 'aeiou')

'rd ths shrt txt'

複制

2.6版新增功能(néng):支持None 表格參數(shù)。

對于Unicode對象,該translate()方法不接受可(kě)選的deletechars參數(shù)。相反,它會返回一(yī)個s的副本,其中所有字符已經通(tōng)過給定的轉換表映射,該表必須是Unicode序号到Unicode序号,Unicode字符串或None。未映射的字符保持不變。映射到的字符None被删除。請(qǐng)注意,更靈活的方法是使用codecs模塊創建自(zì)定義字符映射編解碼器(請(qǐng)參閱encodings.cp1251示例)。

str.upper()

返回字符串的一(yī)個副本,并将所有裝入字符的字符[4]轉換為(wèi)大寫字符。請(qǐng)注意,str.upper().isupper()可(kě)能(néng)是False如(rú)果s包含無套管的字符或如(rú)果所得到的字符(縣)的Unicode類别不是“呂氏春秋”(字母,大寫),但(dàn)如(rú)“LT”(字母,首字母大寫)。

對于8位字符串,此方法是區(qū)域設置相關的。

str.zfill(width)

返回長(cháng)度寬度字符串中填充零的數(shù)字字符串。符号前綴處理正确。如(rú)果寬度小于或等于,則返回原始字符串len(s)。

New in version 2.2.2.

以下(xià)方法僅出現在unicode對象上(shàng):

unicode.isnumeric()

True如(rú)果S中隻有數(shù)字字符則返回,False否則返回。數(shù)字字符包括數(shù)字字符和(hé)具有Unicode數(shù)值屬性的所有字符,例如(rú)U + 2155,VULGAR FRACTION ONE FIFTH。

unicode.isdecimal()

True如(rú)果S中隻有十進制字符則返回,False否則返回。十進制字符包括數(shù)字字符以及可(kě)用于形成十進制小數(shù)數(shù)字的所有字符,例如(rú)U + 0660,ARABIC-INDIC DIGIT ZERO。

6.2。字符串格式化操作(zuò)

字符串和(hé)Unicode對象有一(yī)個獨特的內(nèi)置操作(zuò):%操作(zuò)符(模)。這(zhè)也被稱為(wèi)字符串格式化或插值運算符。鑒于format % values(其中格式是字符串或Unicode對象),格式中的%轉換規範将替換為(wèi)零個或多個值元素。其效果與使用C語言相似。如(rú)果format是一(yī)個Unicode對象,或者使用該轉換轉換的任何對象都(dōu)是Unicode對象,則結果也将是一(yī)個Unicode對象。sprintf()%s

如(rú)果格式需要(yào)單個參數(shù),則值可(kě)能(néng)是單個非元組對象。[5]否則,值必須是具有由格式字符串或單個映射對象(例如(rú)字典)指定的項目數(shù)量的元組。

轉換說明(míng)符包含兩個或多個字符,并具有以下(xià)組件,它們必須按以下(xià)順序出現:

該'%'字符表示說明(míng)符的開(kāi)始。

映射鍵(可(kě)選),由括号括起來的字符序列組成(例如(rú)(somename))。

轉換标志(可(kě)選),影響某些轉換類型的結果。

最小字段寬度(可(kě)選)。如(rú)果指定為(wèi)'*'(星号),則将從(cóng)元組的下(xià)一(yī)個元素值中讀取實際寬度,并且要(yào)轉換的對象位于最小字段寬度和(hé)可(kě)選精度之後。

精度(可(kě)選),以'.'(點)形式給出,然後是精度。如(rú)果指定為(wèi)'*'(星号),則将從(cóng)元組的下(xià)一(yī)個元素的值中讀取實際寬度,并且要(yào)轉換的值位于精度之後。

長(cháng)度修飾符(可(kě)選)。

轉換類型。

當正确的參數(shù)是一(yī)個字典(或其他(tā)映射類型)時(shí),字符串中的格式必須在字符後面插入一(yī)個帶括号的映射關鍵字'%'。映射鍵從(cóng)映射中選擇要(yào)格式化的值。例如(rú):

>>> print '%(language)s has %(number)03d quote types.' % \

... {"language": "Python", "number": 2}

Python has 002 quote types.

複制

在這(zhè)種情況下(xià)*,格式中不會出現說明(míng)符(因為(wèi)它們需要(yào)一(yī)個連續的參數(shù)列表)。

轉換标志字符是:

标志

含義

'#'

值轉換将使用“替代形式”(下(xià)面定義)。

'0'

轉換将為(wèi)數(shù)字值填充零。

'-'

轉換後的值将保持調整狀态(如(rú)果兩者都(dōu)被賦予,将覆蓋'0'轉換)。

' '

(一(yī)個空格)在由正确的數(shù)字(或空字符串)産生的一(yī)個空白應該留下(xià)一(yī)個有符号的轉換。

'+'

符号字符('+'或' - ')将在轉換之前(覆蓋“空格”标志)。

長(cháng)度修飾符(h,l或L)可(kě)能(néng)存在,但(dàn)會被忽略,因為(wèi)它對于Python不是必需的 - 例如(rú)與之%ld相同%d。

轉換類型是:

轉變

含義

筆(bǐ)記

'd'

帶符号的整數(shù)小數(shù)。

'一(yī)世'

帶符号的整數(shù)小數(shù)。

這(zhè)個

簽署八進制值。

(1)

“在”

已過時(shí)的類型 - 與“d”相同。

(7)

'X'

簽名的十六進制(小寫)。

(2)

'X'

簽名的十六進制(大寫)。

(2)

“與”

浮點指數(shù)格式(小寫)。

(3)

'E'

浮點指數(shù)格式(大寫)。

(3)

'F'

浮點十進制格式。

(3)

'F'

浮點十進制格式。

(3)

'G'

浮點格式。如(rú)果指數(shù)小于-4或小于精度,則使用小寫指數(shù)格式,否則使用小數(shù)格式。

(4)

'G'

浮點格式。如(rú)果指數(shù)小于-4或者不小于精度,則使用大寫指數(shù)格式,否則使用小數(shù)格式。

(4)

'C'

單個字符(接受整數(shù)或單個字符串)。

'R'

String(使用repr()轉換任何Python對象)。

(5)

'S'

字符串(使用str()轉換任何Python對象)。

(6)

'%'

沒有參數(shù)被轉換,結果為(wèi)'%'字符。

注釋:

'0'如(rú)果結果的前導字符不是零,則替換形式将導緻在左側填充和(hé)數(shù)字格式之間(jiān)插入前導零()。

替代形式會導緻在第一(yī)個數(shù)字之前插入'0x'或'0X'取決于是否使用了(le)'x'或'X'格式。

替代形式會導緻結果始終包含小數(shù)點,即使沒有數(shù)字跟着它。精度決定小數(shù)點後的位數(shù),默認為(wèi)6。

替代形式導緻結果始終包含小數(shù)點,并且尾部零不會像原本那(nà)樣被删除。精度決定小數(shù)點前後的有效位數(shù),默認值為(wèi)6。

該%r轉換是在Python 2.0中添加的。精度決定了(le)使用的字符的最大數(shù)量。

如(rú)果提供的對象或格式是一(yī)個unicode字符串,則結果字符串也是unicode。精度決定了(le)使用的字符的最大數(shù)量。

見(jiàn)PEP 237。

由于Python字符串具有明(míng)确的長(cháng)度,因此%s轉換不會假定'\0'字符串的末尾。

在版本2.7中進行(xíng)了(le)更改:%f絕對值超過1e50的數(shù)字轉換不再被%g轉換替代。

附加的字符串操作(zuò)在标準模塊中定義string和(hé)re。

6.3。XRange類型

該xrange類型是一(yī)種常用于循環的不可(kě)變序列。該xrange類型的優點是xrange對象總是會占用相同數(shù)量的內(nèi)存,而不管它所代表的範圍的大小。沒有一(yī)緻的性能(néng)優勢。

XRange對象的行(xíng)為(wèi)很(hěn)少(shǎo):它們隻支持索引,叠代和(hé)len()函數(shù)。

6.4。可(kě)變序列類型

列表和(hé)bytearray對象支持允許就地(dì)修改對象的其他(tā)操作(zuò)。其他(tā)可(kě)變序列類型(添加到語言中時(shí))也應該支持這(zhè)些操作(zuò)。字符串和(hé)元組是不可(kě)變的序列類型:一(yī)旦創建,這(zhè)些對象就不能(néng)被修改。以下(xià)操作(zuò)定義在可(kě)變序列類型上(shàng)(其中x是任意對象):

手術(shù)

結果

筆(bǐ)記

if = x

s的項目i被x替換

如(rú)果:j = t

從(cóng)i到j的片段由可(kě)叠代的t的內(nèi)容替換

del si:j

相同,如(rú)果:j = []

如(rú)果:j:k = t

si:j:k的元素被t的元素替換

(1)

del if:j:k

從(cóng)列表中删除si:j:k的元素

s.append(x)的

與slen(s)相同:len(s)= x

(2)

s.extend(t)或s + = t

大部分與slen(s)相同:len(s)= t

(3)

s * = n

将其內(nèi)容重複n次更新

(11)

s.count(x)的

返回i的數(shù)量為(wèi)si == x

s.index(x [,i,j])

返回最小的k,使得sk == x和(hé)i <= k <j

(4)

s.insert(i,x)

相同:i = x

(5)

s.pop(ⅰ)

與x = if相同; 德爾斯; 返回x

(6)

s.remove(x)的

與del ss.index(x)相同

(4)

s.reverse()

反轉s的項目到位

(7)

s.sort([cmp [,key,reverse]])

對s的項目進行(xíng)排序

(7)(8)(9)(10)

注釋:

t必須與它正在替換的切片具有相同的長(cháng)度。

Python的C實現在曆史上(shàng)接受了(le)多個參數(shù),并将它們隐式地(dì)加入到一(yī)個元組中; 這(zhè)不再适用于Python 2.0。自(zì)從(cóng)Python 1.4以來,這(zhè)種錯誤的使用已被廢棄。

t可(kě)以是任何可(kě)叠代的對象。

在s中未找到xValueError時(shí)引發。當負方向索引作(zuò)為(wèi)方法的第二個或第三個參數(shù)傳遞時(shí),與切片索引相同,将添加列表長(cháng)度。如(rú)果它仍然是負數(shù),就像截面索引一(yī)樣截斷為(wèi)零。在版本2.3中更改:以前,沒有用于指定開(kāi)始和(hé)停止位置的參數(shù)。index()index()

如(rú)果将負向索引作(zuò)為(wèi)方法的第一(yī)個參數(shù)傳遞,則會像insert()添加切片索引一(yī)樣添加列表長(cháng)度。如(rú)果它仍然是負數(shù),就像截面索引一(yī)樣截斷為(wèi)零。在版本2.3中更改:以前,所有負指數(shù)都(dōu)被截斷為(wèi)零。

該pop()方法的可(kě)選參數(shù)我默認為(wèi)-1,所以默認情況下(xià)最後一(yī)項被删除并返回。

在排序或倒排大型列表時(shí),sort()和(hé)reverse()方法會修改列表以實現空間(jiān)節約。為(wèi)了(le)提醒您,他(tā)們以副作(zuò)用的方式操作(zuò),他(tā)們不會返回排序或颠倒的列表。

該sort()方法采用可(kě)選參數(shù)來控制比較。 cmp指定兩個參數(shù)(列表項)的自(zì)定義比較函數(shù),它應該返回一(yī)個負數(shù),零或正數(shù),具體取決于第一(yī)個參數(shù)是否小于,等于或大于第二個參數(shù):cmp=lambda x,y: cmp(x.lower(), y.lower())。默認值是None。 key指定一(yī)個用于從(cóng)每個列表元素中提取比較鍵的參數(shù)的函數(shù):key=str.lower。默認值是None。 reverse是一(yī)個布爾值。如(rú)果設置為(wèi)True,則列表元素按照每個比較被颠倒的順序進行(xíng)排序。一(yī)般來說,關鍵和(hé)反向轉換過程比指定等效的cmp函數(shù)要(yào)快(kuài)得多。這(zhè)是因為(wèi)對于每個列表元素,cmp被多次調用,而按鍵和(hé)反向觸摸每個元素隻有一(yī)次。用functools.cmp_to_key()一(yī)個老(lǎo)式的轉換CMP功能(néng)的關鍵功能(néng)。在版本2.3中進行(xíng)了(le)更改:添加None了(le)對等效于省略cmp的支持。

在版本2.4中進行(xíng)了(le)更改:添加了(le)對密鑰和(hé)反向的支持。

從(cóng)Python 2.3開(kāi)始,該sort()方法保證穩定。如(rú)果确保不會更改比較相等的元素的相對順序,則排序是穩定的 - 這(zhè)對于多次排序(例如(rú),按部門排序,然後按薪級)進行(xíng)排序很(hěn)有幫助。

CPython實現細節:列表正在排序時(shí),嘗試對列表進行(xíng)更改或甚至檢查的影響是未定義的。Python 2.3和(hé)更新版本的C實現使得列表在持續時(shí)間(jiān)內(nèi)顯示為(wèi)空,并且ValueError如(rú)果它能(néng)夠檢測列表在排序過程中發生了(le)變異,則引發該列表。

值n是一(yī)個整數(shù)或實現的對象__index__()。n的零和(hé)負值清除序列。序列中的項目不會被複制; 它們被多次引用,如(rú)s * n序列類型 - str,unicode,list,tuple,bytearray,buffer,xrange中所解釋的。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發
下(xià)一(yī)篇:Types: 7. Set Types — set, frozenset
上(shàng)一(yī)篇:Types: 5. Iterator Types