新聞中心
下面要介紹的enumerate、range、zip、reversed、sorted屬于Python內(nèi)置的函數(shù)或者類別,返回的對(duì)象都可通過迭代方法訪問。

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),平陸網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平陸等地區(qū)。平陸做網(wǎng)站價(jià)格咨詢:13518219792
一、enumerate函數(shù)
1.語法:enumerate(iterable, start=0)
1)該函數(shù)Python 2.3. 以上版本可用,2.6 添加 start 參數(shù),返回一個(gè)枚舉對(duì)象,該枚舉對(duì)象是一個(gè)迭代器,該函數(shù)將iterable對(duì)象中的元素轉(zhuǎn)換成枚舉值,并每個(gè)元素分配一個(gè)從start開始的索引值;
2)參數(shù)iterable,表示一個(gè)可迭代對(duì)象如序列;
3)參數(shù)start表示索引值的起始值,默認(rèn)為0;
4)enumerate() 返回的枚舉對(duì)象通過next函數(shù)或 __next__ 方法返回一個(gè)元組,里面包含索引值(從 start 開始,默認(rèn)為 0)和通過迭代 iterable 獲得的對(duì)應(yīng)元素值。
2.對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象,enumerate可以將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值,這種方式一般用在 for 循環(huán)當(dāng)中;
3.注意其返回值是一個(gè)迭代器,遍歷訪問后元素就清空了
4.舉例:
1)s=enumerate('abc',100)?
l =list(s) ?#l的值為:[(100, 'a'), (101, 'b'), (102, 'c')]
2)for index, string in enumerate('ABC',10):print(index,':',string,', ',end='')
輸出:
10 : A , 11 : B , 12 : C ,
二、range函數(shù)
1.語法:
range(start, stop[, step])
1)返回值是一個(gè)不可變的數(shù)字序列可迭代對(duì)象,類型為range,該數(shù)字序列通常用于在 for 循環(huán)中循環(huán)指定的次數(shù);
2)參數(shù)start為可選參數(shù),表示數(shù)字序列的起始值,可以省略,默認(rèn)為0;
3)參數(shù)stop為必選參數(shù),表示整數(shù)序列的終止值,產(chǎn)生的序列的值必須小于該值,當(dāng)range只帶一個(gè)參數(shù)調(diào)用時(shí),該參數(shù)就是stop的值;
4)參數(shù)step表示序列兩個(gè)元素間的步長(zhǎng),也就是序列中相鄰兩個(gè)元素的差值,可選參數(shù),默認(rèn)為1;每個(gè)元素的值r[i]= ?start + step*i ,當(dāng)step為正整數(shù)時(shí)產(chǎn)生的序列是升序排序, r[i] < stop,當(dāng)step為負(fù)整數(shù)時(shí)產(chǎn)生的序列是降序排序, r[i] >stop。
2.說明
1)如果第一個(gè)元素 不符合stop值對(duì)序列的限制條件,則該 range 對(duì)象為空;
2)range 對(duì)象支持索引訪問,也支持負(fù)索引,支持負(fù)索引時(shí)會(huì)將其解讀為從正索引所確定的序列的末尾開始索引,這個(gè)與序列訪問方法一樣;
3)range 對(duì)象支持切片訪問,但與索引訪問方式不一樣,切片訪問返回的還是一個(gè)range對(duì)象,假設(shè):切片的開始位置索引為s,結(jié)束位置為e,當(dāng)step為正數(shù)時(shí)則返回的range對(duì)象為:
range(start+s*step,max(stop,start+e*step),step)
如果step為負(fù)數(shù),則返回的range對(duì)象為:
range(start+s*step,min(stop,start+e*step),step)
4)range 類型相比常規(guī) list 或 tuple 的優(yōu)勢(shì)在于一個(gè) range 對(duì)象總是占用固定數(shù)量的(較?。﹥?nèi)存,不論其所表示的范圍有多大(因?yàn)樗槐4媪?start, stop 和 step 值,并會(huì)根據(jù)需要計(jì)算具體單項(xiàng)或子范圍的值),某種程度上與生成器表達(dá)式類似,但它不屬于生成器,也不是迭代器。
5)使用 == 和 != 檢測(cè) range 對(duì)象是否相等是將其作為序列來比較。 也就是說,如果兩個(gè) range 對(duì)象表示相同的值序列就認(rèn)為它們是相等的。 (請(qǐng)注意比較結(jié)果相等的兩個(gè) range 對(duì)象可能會(huì)具有不同的 start, stop 和 step 屬性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2)。)
6)注意:在Python3以前有個(gè)xrange函數(shù),Python3以后取消了,其功能合并到了range
三、zip函數(shù)
1.語法:zip(*iterables)
1)參數(shù)說明:iterables表示多個(gè)可迭代對(duì)象,可以沒有;
2)返回值為一個(gè)zip對(duì)象,這個(gè)對(duì)象也是一個(gè)迭代器,該迭代器中的元素是元組,元組的元素i按參數(shù)順序來自于這多個(gè)可迭代對(duì)象的第i個(gè)元素。當(dāng)所輸入可迭代參數(shù)對(duì)象中最短的一個(gè)被耗盡時(shí),迭代器將停止迭代。 當(dāng)只有一個(gè)可迭代對(duì)象參數(shù)時(shí),它將返回一個(gè)單元組的迭代器。 不帶參數(shù)時(shí),它將返回一個(gè)空迭代器。
2.說明:
1)返回對(duì)象可以轉(zhuǎn)換為列表、字典等類型,但轉(zhuǎn)換為字典類型時(shí),zip必須且只能有2個(gè)迭代對(duì)象作為參數(shù);
2)zip對(duì)象是個(gè)迭代器,因此遍歷一次后元素會(huì)清空;
3)要查看其內(nèi)容,可使用list或dict將其轉(zhuǎn)換為列表
3.舉例:按順序執(zhí)行下列腳本
numbers=[1,2,3,4,5,6] ABC=['A','B','C'] abc='abc' z=zip(numbers,ABC,abc)
list(z) #輸出為:
[(1, 'A', 'a'), (2, 'B', 'b'), (3, 'C', 'c')]
z=zip(numbers,ABC,abc) #思考一下,為什么要再次zip?
dict(z) #執(zhí)行報(bào)錯(cuò),因?yàn)槭褂昧?個(gè)迭代對(duì)象不能創(chuàng)建字典數(shù)據(jù)
list(z) #輸出為:
[(2, 'B', 'b'), (3, 'C', 'c')]
思考一下為什么比上面少了一個(gè)?
z=zip(numbers,ABC,abc)?
for n,A,a in z:print(n,A,a,end='; ') #輸出為:
1 A a; 2 B b; 3 C c;
四、reversed函數(shù)
1.語法:reversed(seq)
2.說明:
1)返回一個(gè)與參數(shù)對(duì)象順序倒轉(zhuǎn)的 iterator對(duì)象,原參數(shù)對(duì)象保持不變,返回對(duì)象類型為reversed,是一個(gè)可迭代對(duì)象,不能直接訪問,可以轉(zhuǎn)換為其他對(duì)象或通過for循環(huán)方法訪問
2)seq 為任何序列或可迭代的對(duì)象,必須是一個(gè)具有 __reversed__() 方法的對(duì)象或者是支持序列協(xié)議的對(duì)象(支持__len__() 方法和 從0開始的整數(shù)類型參數(shù)的__getitem__() 方法)
3.舉例:
s="AbcD" s2=reversed(s)
type(s2)#輸出:
list(s2) #輸出:
['D', 'c', 'b', 'A']
s保持不變
s2 #輸出:
五、sorted函數(shù)
1.語法:
sorted(iterable, *, key=None, reverse=False)
2.說明:
1)根據(jù) iterable 中的項(xiàng)返回一個(gè)新的已排序列表,返回值為已排序的列表,原參數(shù)iterable 中的數(shù)據(jù)不會(huì)發(fā)生變化;
2)key 指定帶有單個(gè)參數(shù)的函數(shù),用于從 iterable 的每個(gè)元素中提取用于比較的鍵 (例如 key=str.lower)。 默認(rèn)值為 None (直接比較元素)
3)reverse 為一個(gè)布爾值。 如果設(shè)為 True,則每個(gè)列表元素將按反向順序比較進(jìn)行排序
3.舉例
s="AbcD"
s1=sorted(s) #s1的數(shù)據(jù)為:
['A', 'D', 'b', 'c']
s2=sorted(s,key=str.lower) #s2的數(shù)據(jù)為:
['A', 'b', 'c', 'D']
標(biāo)題名稱:創(chuàng)新互聯(lián)Python教程:超詳細(xì)的Python中與迭代相關(guān)的函數(shù)
當(dāng)前URL:http://www.5511xx.com/article/cdcpphh.html


咨詢
建站咨詢
