這篇文章將為大家詳細講解有關(guān)python中的有序列表是哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司企業(yè)建站,10余年網(wǎng)站建設(shè)經(jīng)驗,專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計,有多年建站和網(wǎng)站代運營經(jīng)驗,設(shè)計師為客戶打造網(wǎng)絡(luò)企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)中不同領(lǐng)域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。列表、元組、字符串是python的有序序列;其中列表是可變對象,元組和字符串則是不可變對象。序列中的每個元素都分配一個數(shù)字,即它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu)。序列中的每個元素都分配一個數(shù)字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,Python已經(jīng)內(nèi)置確定序列的長度以及確定大和最小的元素的方法。
列表、元組、字符串是python的有序序列;其中列表是個可變對象,元組和字符串則是不可變對象。
列表(list)
列表是包含0個或多個對象引用的有序序列,支持與字符串以及元組一樣的分片與步距語法。與字符串以及元組不同的是,列表是可變的,因此,我們可以對列表中的項機芯刪除或替換,插入、替換或刪除列表中的分片。
list數(shù)據(jù)類型可以作為函數(shù)進行調(diào)用,list()--不帶參數(shù)進行調(diào)用是將返回一個空列表;帶一個list參數(shù)時,返回該參數(shù)的淺拷貝;對任意其他參數(shù),則嘗試將給定的對象轉(zhuǎn)換為列表。該函數(shù)值接受一個參數(shù)的情況。列表也可以不使用list()函數(shù)創(chuàng)建,空列表可以使用空的方括號來創(chuàng)建,包含一個或多個項的列表則可以使用逗號分隔的數(shù)據(jù)項(包含在[]中)序列來創(chuàng)建。
列表提供的方法:
任意可迭代的(列表、元組等)數(shù)據(jù)類型都可以使用序列拆分操作符進行拆分,即:* 。用于賦值操作符左邊的兩個或多個變量時,其中的一個使用*進行引導(dǎo),數(shù)據(jù)項將賦值給該變量,而所有剩下的數(shù)據(jù)項將賦值給帶星號的變量,下面給出一些實例:
以這種方式使用序列拆分操作符時,表達式*rest以及類似的表達式稱為帶星號的表達式。
python還有一個相關(guān)的概念:帶星號的參數(shù)。
對列表中的數(shù)據(jù)項,科研在其上進行迭代處理,使用的語法格式是 for item in L:。如果需要改列表中的數(shù)據(jù)項,那么使用的慣用方法如下:
for i in range(len(L)): L[i] = process(L[i])
由于列表支持分片,因此在幾種情況下,使用分片或某種列表方法可以完成同樣的功能,如:給定列表woods=['Cedar','Yew','Fir'],我們可以以如下的兩種方式擴展列表:
woods+=['Kauri','Larch'] | woods.extend(['Kauri','Larch'])
對上面兩種方法,所得結(jié)果都是列表['Cedar','Yew','Fir','Kauri','Larch']。
使用list.append()方法,可以將單個數(shù)據(jù)項添加到列表尾部。使用list.insert()方法(或者賦值給一個長度為0的分片),可以將數(shù)據(jù)項插入到列表內(nèi)的任何索引位置。比如,給定列表woods=['Cedar','Yew','Fir','Spruce'],我們可以在索引位置2處插入一個新的數(shù)據(jù)項(也就是作為該列表的第三項),下面兩種方法均可以實現(xiàn):
woods[2:2] = ['Pine'] | woods.insert(2,'Pine')
上面兩種方法所得的結(jié)果都是列表['Cedar','Yew','Pine','Fir','Spruce'].
通過對特定索引位置處的對象進行賦值,可以對列表中的單個數(shù)據(jù)項進行替換,比如,woods[2]='Redwood'。通過將iterable賦值給分片,可以替換整個分片,比如,woods[1:3]=['Spruce','Sugi','Rimu'],并且分片月iterable并不必須是等長的。在所有這些情況下,都會刪除分片的數(shù)據(jù)項,并插入iterable的數(shù)據(jù)項。如果iterable包含的項數(shù)比要替代的分片包含的項數(shù)少,那么這一操作會使類別變短;反之,則使得列表變成。如下例子:
對于復(fù)雜的列表,可以使用for...in 循環(huán)創(chuàng)建,如,假定需要生成給定時間范圍內(nèi)的閏年列表,可以使用如下語句:
leaps = [] for year in range(1900,1940): if (year%4 == 0 and year %100 !=0) or (year % 400 ==0): leaps.append(year)
兩種表達式:
expression for item in iterable expression for item in iterable if condition
元組(tuple)
元組是個有序的序列,其中包含0個或多個對象引用。元組支持與字符串一樣的分片與步距的語法,這使得從元組中提取數(shù)據(jù)項比較容易。元組也是固定的,不能替換或刪除其中包含的任意數(shù)據(jù)項。如果需要修改有序序列,我們應(yīng)該使用類別而非元組。如果要對元組進行修改,可以使用list()轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為列表,之后在產(chǎn)生的列表之上進行適當修改。
tuple數(shù)據(jù)類型可以作為一個函數(shù)進行調(diào)用,tuple()---不指定參數(shù)時將返回一個空元組,使用tuple作為參數(shù)時將返回該參數(shù)的淺拷貝,對其他任意參數(shù),將嘗試把給定的對象轉(zhuǎn)換為tuple類型。該函數(shù)最多只能接受一個參數(shù)。元組也可以使用tuple()函數(shù)創(chuàng)建,空元組是使用空圓括號()創(chuàng)建的,包含一個或多個項的元組則可以使用逗號分隔進行創(chuàng)建。
元組只提供了兩種方法:t.count(x),返回對象x在元組中出現(xiàn)的次數(shù);t.index(x),返回對象在元組t中出現(xiàn)的最左邊位置。
元組可以使用操作符+(連接)、*(賦值)與 [](分片),要可以使用in 與not in 來測試成員關(guān)系。
下面給出幾個分片實例:
上面這些處理過程對字符串、列表以及人員其他序列類型都是一樣的
要構(gòu)成一個億元組,逗號是必須的,這里red字符串地方我們必須同時使用逗號與圓括號。
1.1 命名的元組
命名的元組與普通元組一樣,有相同的表現(xiàn)特征,其添加的功能就是可以根據(jù)名稱引用元組中的項,就像根據(jù)索引位置一樣,這一功能使我們可以創(chuàng)建數(shù)據(jù)項的聚集。
collections 模塊提供了 namedtuple()函數(shù),該函數(shù)用于創(chuàng)建自定義的元組數(shù)據(jù)類型,例如:
collections.namedtuple()的第一個參數(shù)是想要創(chuàng)建的自定義元組數(shù)據(jù)類型的名稱,第二個參數(shù)是一個字符串,其中包含使用空格分割的名稱,每個名稱代表該元組數(shù)據(jù)類型的一項。該函數(shù)返回一個自定義的類(數(shù)據(jù)類型),用于創(chuàng)建命名的元組。因此,這一情況下,我們將sale與任何其他python類一樣看待,并創(chuàng)建類型為sale的對象,如:
這里我們廠家了包含兩個sale項的列表,也就是包含兩個自定義元組。我們也可以使用索引位置來引用元組中的項----比如,第一個銷售項的價格為sales[0][-1],但我們呢也可以使用名稱進行引用,這樣會更加清晰:
命名的元組提供的清晰與便利通常都是有用的,比如,下面另一個例子:
私有方法namedtuple._asdict()返回的是鍵-值對的映射,其中每個鍵都是元組元素的名稱,值則是對應(yīng)的值,我們使用映射拆分將映射轉(zhuǎn)換為str.format()方法的鍵-值參數(shù)。
“{manufacturer} {model}”.format(**aircraft._asdict())
字符串
str,字符串在python中是有序序列,這意味著字符串在python中可以做很多操作,比如slice。不過有一點是字符串中某部分無法進行修改,因為是不可變對象。
字符串經(jīng)常碰到的一個問題就是怎么把 字符串倒序輸出。
這時候我們就可以把slice用到字符串中,編寫一個倒序輸出的函數(shù)如下:
def reverse(x): if not isinstance(x,basestring): raise TypeError ("bad type"); else: return x[::-1]
isinstance是用來判斷參數(shù)是否是字符串,如果不是的話將會報錯。
basestring是str和unicode的父類,可以用來分辨是不是字符串的類型。
關(guān)于python中的有序列表是哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。