欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python序列對(duì)象與String類型內(nèi)置方法詳解

 更新時(shí)間:2019年10月22日 10:48:28   作者:范桂颶  
這篇文章主要介紹了Python序列對(duì)象與String類型內(nèi)置方法,結(jié)合實(shí)例形式分析了Python序列對(duì)象與String類型各種常見內(nèi)置方法相關(guān)使用技巧及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python序列對(duì)象與String類型內(nèi)置方法。分享給大家供大家參考,具體如下:

前言

在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ì)的介紹,傳送門:http://www.dbjr.com.cn/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ì)象的長度

序列對(duì)象的長度,即序列對(duì)象元素的個(gè)數(shù)

In [39]: name = 'Jmilk'
In [40]: len(name)
Out[40]: 5

zip 混合兩個(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)和元素組成的元組??梢灾付ㄋ饕钠鹗嘉恢谩?/p>

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 k

sorted() 序列的排序

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 m

min() 取出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'

最后

同樣是序列對(duì)象一份子的List類型,一樣有著非常多有意思的內(nèi)置方法,我們下回再繼續(xù)學(xué)習(xí)。

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python列表(list)操作技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Docker如何部署Python項(xiàng)目的實(shí)現(xiàn)詳解

    Docker如何部署Python項(xiàng)目的實(shí)現(xiàn)詳解

    這篇文章主要介紹了Docker如何部署Python項(xiàng)目的實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Linux中Python 環(huán)境軟件包安裝步驟

    Linux中Python 環(huán)境軟件包安裝步驟

    本文給大家分享的是在Linux系統(tǒng)中Python環(huán)境的安裝步驟,以及常用的軟件的安裝升級(jí),非常的實(shí)用,有需要的小伙伴可以參考下
    2016-03-03
  • 基于Python爬取搜狐證券股票過程解析

    基于Python爬取搜狐證券股票過程解析

    這篇文章主要介紹了基于Python爬取搜狐證券股票過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python中的匿名函數(shù)使用簡(jiǎn)介

    Python中的匿名函數(shù)使用簡(jiǎn)介

    這篇文章主要介紹了Python中的匿名函數(shù)的使用,lambda是各個(gè)現(xiàn)代編程語言中的重要功能,需要的朋友可以參考下
    2015-04-04
  • pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    這篇文章主要介紹了pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python 不同對(duì)象比較大小示例探討

    Python 不同對(duì)象比較大小示例探討

    不同對(duì)象比較是按照 type names 比較,當(dāng)相同類型對(duì)象不支持適當(dāng)比較的時(shí)候,采用 address 比較,需要的朋友可以參考下
    2014-08-08
  • Selenium python時(shí)間控件輸入問題解決方案

    Selenium python時(shí)間控件輸入問題解決方案

    這篇文章主要介紹了Selenium python時(shí)間控件輸入問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于python爬蟲應(yīng)用urllib庫作用分析

    關(guān)于python爬蟲應(yīng)用urllib庫作用分析

    這篇文章主要介紹了關(guān)于python爬蟲應(yīng)用urllib庫作用分析,想要進(jìn)行python爬蟲首先我們需要先將網(wǎng)頁上面的信息給獲取下來,這就是utllib庫的作用,有需要的朋友可以借鑒參考下
    2021-09-09
  • Python爬蟲——爬取豆瓣電影Top250代碼實(shí)例

    Python爬蟲——爬取豆瓣電影Top250代碼實(shí)例

    這篇文章主要介紹了Python爬取豆瓣電影Top250實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Django中使用group_by的方法

    Django中使用group_by的方法

    這篇文章主要介紹了Django中使用group_by的方法,實(shí)例分析了在Django中使用group_by語句的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評(píng)論