這篇文章主要為大家展示了“Python序列對(duì)象與String類型內(nèi)置方法的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python序列對(duì)象與String類型內(nèi)置方法的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、志丹網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為志丹等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。前言在Python數(shù)據(jù)結(jié)構(gòu)篇中介紹了Python的序列類型數(shù)據(jù)結(jié)構(gòu),這次繼續(xù)深入的學(xué)習(xí)序列和String類型對(duì)象的內(nèi)建方法。
軟件環(huán)境系統(tǒng)
UbuntuKylin 14.04
軟件
Python 2.7.3
IPython 4.0.0
序列類型,即由整數(shù)進(jìn)行索引的對(duì)象的有序集合。其中又可以分為下面兩類:
可變序列:列表,支持元素的插入、刪除、替換
不可變序列:元組、字符串
序列本質(zhì)上是由索引對(duì)象來指向內(nèi)存中的數(shù)據(jù)對(duì)象,所以序列數(shù)據(jù)對(duì)象都支持迭代方式,也都能夠支持下列幾種操作。
索引調(diào)用In [1]: li = [1,2,'name'] In [2]: li[0] Out[2]: 1 In [3]: tp = (1,2,'name') In [4]: tp[1] Out[4]: 2 In [6]: str = 'Jmilk' In [7]: str[2] Out[7]: 'i'切片運(yùn)算符
sequenceName[x:y] ? 切割出由索引X到y(tǒng)-1之間的元素。
注意:索引均由0開始。而且序列的切片操作會(huì)返回一個(gè)生成一個(gè)新的對(duì)象,不會(huì)讓原序列發(fā)生改變。
In [12]: li[:3] Out[12]: [1, 2, 'name'] In [13]: li[1:3] Out[13]: [2, 'name'] In [14]: tp[1:3] Out[14]: (2, 'name') In [15]: str[1:3] Out[15]: 'mi'擴(kuò)展切片運(yùn)算符
sequenceName[x:y:stride] ? 除了切割除x到y(tǒng)-1直接的元素,再對(duì)這些元素以stride-1的步進(jìn)(間隔)進(jìn)行挑選。
擴(kuò)展切片運(yùn)算符能夠支持步進(jìn)。即獲取下一個(gè)索引之間的間隔。
In [16]: str = 'My name is Jmilk!' In [21]: str[1:10:2] Out[21]: 'ynm s'
首先切割除第2到10個(gè)元素(空格也算一個(gè)),再每隔1個(gè)元素挑選一個(gè)元素。
序列元素的反轉(zhuǎn)序列的索引還可以是負(fù)數(shù),-1指向序列的最后一個(gè)元素,以此類推。Example:
In [30]: str[-1] Out[30]: '!' In [31]: tp[-1] Out[31]: 'name'
還有下面兩種有趣的玩法:
反轉(zhuǎn)序列
In [27]: str Out[27]: 'My name is Jmilk!' In [28]: str[::-1] Out[28]: '!klimJ si eman yM'
倒轉(zhuǎn)刪除元素
In [33]: str[:-2] Out[33]: 'My name is Jmil'
刪除了倒數(shù)第1到第2個(gè)元素。
連接操作符連接操作符' + ‘,可以將若干個(gè)同類型的序列對(duì)象連接到一起。
In [1]: str = 'My name is ' In [2]: name = 'Jmilk' In [3]: str + name Out[3]: 'My name is Jmilk' In [4]: name = ['Jmilk'] In [5]: str + name --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-894081027c0a> in <module>() ----> 1 str + name TypeError: cannot concatenate 'str' and 'list' objects
如果使用連接操作符處理兩個(gè)不同類型的序列,會(huì)出現(xiàn)類型錯(cuò)誤。
重復(fù)運(yùn)算符重復(fù)運(yùn)算符' * ‘,能夠讓被操作數(shù)重復(fù)的n次,并生成一個(gè)新的同類型序列。
In [16]: star = '*' In [17]: star * 10 Out[17]: '**********' In [18]: star = ['*','*'] In [19]: star * 10 Out[19]: ['*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*']成員關(guān)系符
成員運(yùn)算符 in\not in 能夠判斷一個(gè)指定對(duì)象是否是作為一個(gè)容器中的元素,由此來判斷兩個(gè)對(duì)象間的關(guān)系。在Python運(yùn)算符一篇中有詳細(xì)的介紹,傳送門:https://www.jb51.net/article/172479.htm
In [333]: li = [1,2,3] In [334]: 1 in li Out[334]: True In [335]: 1 not in li Out[335]: False序列內(nèi)置方法
注意:建議在學(xué)習(xí)一個(gè)方法之前,先使用help()函數(shù)來查看方法的使用說明文檔,其中參數(shù)類型可能為iterable迭代器。iterable迭代器分為下面3類:
1.所有的序列類型list、str、tuple。
2.非序列類型dict、file。
3.自定義的任何包含__iter__()或__getitem__()方法的類的對(duì)象。
即函數(shù)參數(shù)中包含iterable,表示可以傳遞迭代器類型實(shí)參。
len() 獲取序列對(duì)象的長(zhǎng)度序列對(duì)象的長(zhǎng)度,即序列對(duì)象元素的個(gè)數(shù)
In [39]: name = 'Jmilk' In [40]: len(name) Out[40]: 5zip 混合兩個(gè)序列對(duì)象
將兩個(gè)序列對(duì)象索引相同的兩個(gè)元素結(jié)合成元組,以較短的程度為準(zhǔn)。
In [54]: str Out[54]: ['my', 'name', 'is', 'Jmilk'] In [55]: name Out[55]: 'Jmilk' In [56]: zip(name,str) Out[56]: [('J', 'my'), ('m', 'name'), ('i', 'is'), ('l', 'Jmilk')]enumerate() 枚舉出序列對(duì)象的元素
enumerate(sequence[,start = 0])接收一個(gè)序列類型的參數(shù),返回由每一對(duì)索引號(hào)和元素組成的元組。可以指定索引的起始位置。
In [86]: for i,word in enumerate(name,2): print i,word ....: 2 m 3 y 4 5 n 6 a 7 m 8 e 9 10 i 11 s 12 13 j 14 m 15 i 16 l 17 ksorted() 序列的排序
sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list
iterable:待排序的對(duì)象
cmp(x,y):指定一個(gè)定制的能夠比較兩個(gè)接收到的參數(shù)的函數(shù),默認(rèn)為None,即內(nèi)建的比較函數(shù)。
key(x):指定一個(gè)接收一個(gè)參數(shù)的函數(shù),用作在每個(gè)元素中提取一個(gè)關(guān)鍵值作為比較值,缺省為None比較每個(gè)元素。
reverse:False為默認(rèn)正序排列,True為逆序排列。
注意:沒有__getitem__屬性的對(duì)象,如:int類型是不能調(diào)用key和cmp函數(shù)的。
注意:在Python中有許多內(nèi)建的函數(shù)需要指定一個(gè)定制的函數(shù),如:map()、filter()、reduce()、包括sorted等,這種時(shí)候使用lambda匿名函數(shù)將會(huì)非常的方便。
排序效率:key 、reverse > cmp 。因?yàn)閏mp函數(shù)進(jìn)行多次的兩兩比較,而key、reverse對(duì)每個(gè)輸入記錄只會(huì)被調(diào)用一次。
Key函數(shù):以第二個(gè)關(guān)鍵字為比較值排序
In [205]: li = [('a',3),('b',2),('c',1)] In [208]: sorted(li,key = lambda keyword:keyword[1]) Out[208]: [('c', 1), ('b', 2), ('a', 3)]
cmp函數(shù):以第二個(gè)關(guān)鍵字為比較值排序
In [213]: sorted(li,cmp = lambda x,y:cmp(x[1],y[1])) Out[213]: [('c', 1), ('b', 2), ('a', 3)]
reverse:逆序排列
In [216]: sorted(li,lambda z,x:cmp(z[1],x[1]),reverse=True) Out[216]: [('a', 3), ('b', 2), ('c', 1)]reversed() 返回一個(gè)逆序訪問的迭代器
In [84]: for word in reversed(name): print word, ....: k l i m j s i e m a n y mmin() 取出sequence中的最小值
In [43]: min(str) Out[43]: ' ' In [44]: min(li) Out[44]: 1
若元素是String類型的化會(huì)轉(zhuǎn)換為ASCII碼計(jì)算后再比較。
max() 取出sequence中的大值類似min()方法。
sum() 計(jì)算序列中的各項(xiàng)元素和注意:sum()方法不支持元素為String或Char類型的序列。
In [59]: num = [1,2,3,4] In [60]: str = 'My name is Jmilk' In [61]: sum(num) Out[61]: 10 In [62]: sum(str) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-62-3a5f0824550a> in <module>() ----> 1 sum(str) TypeError: unsupported operand type(s) for +: 'int' and 'str'
會(huì)觸發(fā)類型錯(cuò)誤,不支持的運(yùn)算數(shù)類型
all() 檢測(cè)sequence中各項(xiàng)元素是否均為True全True則Truw
In [63]: num = [1,2,3,''] In [64]: all(num) Out[64]: False In [65]: num = [1,2,3,True] In [66]: all(num) Out[66]: True
注意:所以的空值序列對(duì)象都是False
any() 檢測(cè)sequence中的任意項(xiàng)是否為True有True則True
In [67]: num = [1,2,3,''] In [68]: any(num) Out[68]: True字符串String讓Str支持Unicode
In [64]: name = u"My name is JMilk" In [65]: name Out[65]: u'My name is JMilk'
下面介紹適用于字符串的內(nèi)建方法。
capitalize() 將字符串首字母變成大寫In [88]: str = 'my name is jmilk' In [89]: str.capitalize() Out[89]: 'My name is jmilk'
lower()、upper() 將字符串都使用小寫、大寫
In [90]: str.lower() Out[90]: 'my name is jmilk' In [91]: str.upper() Out[91]: 'MY NAME IS JMILK'title() 將字符串中單詞的首字母變成大寫,其余小寫
In [92]: str.title() Out[92]: 'My Name Is Jmilk'index() 找到substring對(duì)應(yīng)的元組的索引號(hào)
S.index(sub [,start [,end]]) -> int 在start-end的范圍內(nèi)找到substring對(duì)應(yīng)的索引號(hào),再返回一個(gè)int類型對(duì)象。
In [92]: str.title() Out[92]: 'My Name Is Jmilk' In [93]: str.title().index('J',2,13) Out[93]: 11
當(dāng)在指定范圍內(nèi)沒有查詢到substring時(shí),會(huì)觸發(fā)ValueError: substring not found的錯(cuò)誤。同時(shí)可以看出,String類型對(duì)象調(diào)用了其內(nèi)建方法后仍是String類型。
join() 將String插入到序列的元素之間S.join(iterable) -> string 傳遞一個(gè)序列參數(shù),會(huì)將String對(duì)象插入到序列的元素之間。即將序列的元素以String為分隔符連接起來,string對(duì)象可以為空。
In [103]: li = ['a','b','c'] In [104]: str Out[104]: 'my name is jmilk' In [105]: str.join(li) Out[105]: 'amy name is jmilkbmy name is jmilkc'replace() 替換String中的元素
S.replace(old, new[, count]) -> string
將String中的元素替換為指定的新元素,還可以指定替換的數(shù)量。
In [113]: url = 'www.jmilk.com' In [114]: url.replace('jmilk','fan') Out[114]: 'www.fan.com'split() 將string以指定的分隔符分裂成列表
S.split([sep [,maxsplit]]) -> list of strings
輸入指定的分割符和分割次數(shù)兩個(gè)參數(shù)。
In [117]: url.split('.',2) Out[117]: ['www', 'jmilk', 'com'] In [118]: url = 'www.jmilk.com' In [119]: url.split('.',2) Out[119]: ['www', 'jmilk', 'com'] In [120]: url.split('.',1) Out[120]: ['www', 'jmilk.com']strip() 修剪在String兩端的Char
S.strip([chars]) -> string or unicode
將String兩端的Chars去掉,并不能去掉String中間的subString
In [124]: url.strip('w') Out[124]: '.jmilk.com' In [125]: url.strip('m') Out[125]: 'www.jmilk.co' In [126]: url.strip('om') Out[126]: 'www.jmilk.c'
以上是“Python序列對(duì)象與String類型內(nèi)置方法的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章標(biāo)題:Python序列對(duì)象與String類型內(nèi)置方法的示例分析-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article48/ccdeep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容