日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

第4.3节 Python中与迭代相关的函数

發(fā)布時間:2023/12/18 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第4.3节 Python中与迭代相关的函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

一、?? ?enumerate函數(shù)
1.?? ?語法:enumerate(iterable, start=0)
1)?? ?該函數(shù)Python 2.3. 以上版本可用,2.6 添加 start 參數(shù),返回一個枚舉對象,該枚舉對象是一個迭代器,該函數(shù)將iterable對象中的元素轉換成枚舉值,并每個元素分配一個從start開始的索引值;
2)?? ?參數(shù)iterable,表示一個可迭代對象如序列;
3)?? ?參數(shù)start表示索引值的起始值,默認為0;
4)?? ?enumerate() 返回的枚舉對象通過next函數(shù)或 __next__ 方法返回一個元組,里面包含索引值(從 start 開始,默認為 0)和通過迭代 iterable 獲得的對應元素值。
2.?? ?對于一個可迭代的(iterable)/可遍歷的對象,enumerate可以將其組成一個索引序列,利用它可以同時獲得索引和值,這種方式一般用在 for 循環(huán)當中;
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ù)字序列的起始值,可以省略,默認為0;
3)?? ?參數(shù)stop為必選參數(shù),表示整數(shù)序列的終止值,產生的序列的最大值必須小于該值,當range只帶一個參數(shù)調用時,該參數(shù)就是stop的值;
4)?? ?參數(shù)step表示序列兩個元素間的步長,也就是序列中相鄰兩個元素的差值,可選參數(shù),默認為1;每個元素的值r[i]= ?start + step*i ,當step為正整數(shù)時產生的序列是升序排序, r[i] < stop,當step為負整數(shù)時產生的序列是降序排序, r[i] >stop。
2.?? ?說明
1)?? ?如果第一個元素 不符合stop值對序列的限制條件,則該 range 對象為空;
2)?? ? range 對象支持索引訪問,也支持負索引,支持負索引時會將其解讀為從正索引所確定的序列的末尾開始索引,這個與序列訪問方法一樣;
3)?? ?range 對象支持切片訪問,但與索引訪問方式不一樣,切片訪問返回的還是一個range對象,假設:切片的開始位置索引為s,結束位置為e,當step為正數(shù)時則返回的range對象為:
range(start+s*step,max(stop,start+e*step),step)
如果step為負數(shù),則返回的range對象為:range(start+s*step,min(stop,start+e*step),step)
4)?? ?range 類型相比常規(guī) list 或 tuple 的優(yōu)勢在于一個 range 對象總是占用固定數(shù)量的(較小)內存,不論其所表示的范圍有多大(因為它只保存了 start, stop 和 step 值,并會根據(jù)需要計算具體單項或子范圍的值),某種程度上與生成器表達式類似,但它不屬于生成器,也不是迭代器。
5)?? ?使用 == 和 != 檢測 range 對象是否相等是將其作為序列來比較。 也就是說,如果兩個 range 對象表示相同的值序列就認為它們是相等的。 (請注意比較結果相等的兩個 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個元素。當所輸入可迭代參數(shù)對象中最短的一個被耗盡時,迭代器將停止迭代。 當只有一個可迭代對象參數(shù)時,它將返回一個單元組的迭代器。 不帶參數(shù)時,它將返回一個空迭代器。
2.?? ?說明:
1)?? ?返回對象可以轉換為列表、字典等類型,但轉換為字典類型時,zip必須且只能有2個迭代對象作為參數(shù);
2)?? ?zip對象是個迭代器,因此遍歷一次后元素會清空;
3)?? ?要查看其內容,可使用list或dict將其轉換為列表
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ù)對象順序倒轉的 iterator對象,原參數(shù)對象保持不變,返回對象類型為reversed,是一個可迭代對象,不能直接訪問,可以轉換為其他對象或通過for循環(huán)方法訪問
2)?? ?seq 為任何序列或可迭代的對象,必須是一個具有 __reversed__() 方法的對象或者是支持序列協(xié)議的對象(支持__len__() 方法和 從0開始的整數(shù)類型參數(shù)的__getitem__() 方法)
3.?? ?舉例:
s="AbcD"
s2=reversed(s)
type(s2) ?#輸出:<class 'reversed'>
list(s2) ? #輸出:['D', 'c', 'b', 'A'],s保持不變
s2 ?#輸出:<reversed object at 0x000000000371B1D0>


五、?? ?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)。 默認值為 None (直接比較元素)
3)?? ?reverse 為一個布爾值。 如果設為 True,則每個列表元素將按反向順序比較進行排序
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']

? ? 本節(jié)介紹了幾個常用函數(shù),這些函數(shù)都與迭代處理相關,掌握這幾個函數(shù)有助于理解后面章節(jié)的內容。
? ? 老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介紹老猿學習Python后總結的學習經(jīng)驗,這些經(jīng)驗有助于沒有接觸過Python的程序員可以很容易地進入Python的世界。?

歡迎大家批評指正,謝謝大家關注!

轉載于:https://www.cnblogs.com/LaoYuanPython/p/11087729.html

總結

以上是生活随笔為你收集整理的第4.3节 Python中与迭代相关的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。