創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)建站主營西塞山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),西塞山h5微信小程序搭建,西塞山網(wǎng)站營銷推廣歡迎西塞山等地區(qū)企業(yè)咨詢Python中與迭代相關(guān)的函數(shù)有哪些?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
下面要介紹的enumerate、range、zip、reversed、sorted屬于Python內(nèi)置的函數(shù)或者類別,返回的對象都可通過迭代方法訪問。
一、enumerate函數(shù)
1.語法:enumerate(iterable, start=0)
1)該函數(shù)Python 2.3. 以上版本可用,2.6 添加 start 參數(shù),返回一個枚舉對象,該枚舉對象是一個迭代器,該函數(shù)將iterable對象中的元素轉(zhuǎn)換成枚舉值,并每個元素分配一個從start開始的索引值;
2)參數(shù)iterable,表示一個可迭代對象如序列;
3)參數(shù)start表示索引值的起始值,默認(rèn)為0;
4)enumerate() 返回的枚舉對象通過next函數(shù)或 __next__ 方法返回一個元組,里面包含索引值(從 start 開始,默認(rèn)為 0)和通過迭代 iterable 獲得的對應(yīng)元素值。
2.對于一個可迭代的(iterable)/可遍歷的對象,enumerate可以將其組成一個索引序列,利用它可以同時獲得索引和值,這種方式一般用在 for 循環(huán)當(dāng)中;
3.注意其返回值是一個迭代器,遍歷訪問后元素就清空了
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)返回值是一個不可變的數(shù)字序列可迭代對象,類型為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只帶一個參數(shù)調(diào)用時,該參數(shù)就是stop的值;
4)參數(shù)step表示序列兩個元素間的步長,也就是序列中相鄰兩個元素的差值,可選參數(shù),默認(rèn)為1;每個元素的值r[i]= ?start + step*i ,當(dāng)step為正整數(shù)時產(chǎn)生的序列是升序排序, r[i] < stop,當(dāng)step為負(fù)整數(shù)時產(chǎn)生的序列是降序排序, r[i] >stop。
2.說明
1)如果第一個元素 不符合stop值對序列的限制條件,則該 range 對象為空;
2)range 對象支持索引訪問,也支持負(fù)索引,支持負(fù)索引時會將其解讀為從正索引所確定的序列的末尾開始索引,這個與序列訪問方法一樣;
3)range 對象支持切片訪問,但與索引訪問方式不一樣,切片訪問返回的還是一個range對象,假設(shè):切片的開始位置索引為s,結(jié)束位置為e,當(dāng)step為正數(shù)時則返回的range對象為:
range(start+s*step,max(stop,start+e*step),step)
如果step為負(fù)數(shù),則返回的range對象為:
range(start+s*step,min(stop,start+e*step),step)
4)range 類型相比常規(guī) list 或 tuple 的優(yōu)勢在于一個 range 對象總是占用固定數(shù)量的(較?。﹥?nèi)存,不論其所表示的范圍有多大(因為它只保存了 start, stop 和 step 值,并會根據(jù)需要計算具體單項或子范圍的值),某種程度上與生成器表達(dá)式類似,但它不屬于生成器,也不是迭代器。
5)使用 == 和 != 檢測 range 對象是否相等是將其作為序列來比較。 也就是說,如果兩個 range 對象表示相同的值序列就認(rèn)為它們是相等的。 (請注意比較結(jié)果相等的兩個 range 對象可能會具有不同的 start, stop 和 step 屬性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2)。)
6)注意:在Python3以前有個xrange函數(shù),Python3以后取消了,其功能合并到了range
三、zip函數(shù)
1.語法:zip(*iterables)
1)參數(shù)說明:iterables表示多個可迭代對象,可以沒有;
2)返回值為一個zip對象,這個對象也是一個迭代器,該迭代器中的元素是元組,元組的元素i按參數(shù)順序來自于這多個可迭代對象的第i個元素。當(dāng)所輸入可迭代參數(shù)對象中最短的一個被耗盡時,迭代器將停止迭代。 當(dāng)只有一個可迭代對象參數(shù)時,它將返回一個單元組的迭代器。 不帶參數(shù)時,它將返回一個空迭代器。
2.說明:
1)返回對象可以轉(zhuǎn)換為列表、字典等類型,但轉(zhuǎn)換為字典類型時,zip必須且只能有2個迭代對象作為參數(shù);
2)zip對象是個迭代器,因此遍歷一次后元素會清空;
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í)行報錯,因為使用了3個迭代對象不能創(chuàng)建字典數(shù)據(jù)
list(z) #輸出為:
[(2, 'B', 'b'), (3, 'C', 'c')]
思考一下為什么比上面少了一個?
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)返回一個與參數(shù)對象順序倒轉(zhuǎn)的 iterator對象,原參數(shù)對象保持不變,返回對象類型為reversed,是一個可迭代對象,不能直接訪問,可以轉(zhuǎn)換為其他對象或通過for循環(huán)方法訪問
2)seq 為任何序列或可迭代的對象,必須是一個具有 __reversed__() 方法的對象或者是支持序列協(xié)議的對象(支持__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 中的項返回一個新的已排序列表,返回值為已排序的列表,原參數(shù)iterable 中的數(shù)據(jù)不會發(fā)生變化;
2)key 指定帶有單個參數(shù)的函數(shù),用于從 iterable 的每個元素中提取用于比較的鍵 (例如 key=str.lower)。 默認(rèn)值為 None (直接比較元素)
3)reverse 為一個布爾值。 如果設(shè)為 True,則每個列表元素將按反向順序比較進(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']
關(guān)于Python中與迭代相關(guān)的函數(shù)有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。