无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python個人學(xué)習(xí)筆記 生成器與迭代器

2023-04-12 21:09 作者:ベレッタ  | 我要投稿

迭代器

迭代器為可迭代對象,可以生成一系列值。等要用的時候才會把值取出來,比起列表更省空間。

可以生成迭代器的函數(shù):iter()、zip()、map()、reversed()、itertools庫里的各種函數(shù)等。


生成器

用來生成迭代器的函數(shù)。


迭代器甚至可以是無限的。


獲取迭代器里的元素

①迭代器作為可迭代對象,可以用for循環(huán)遍歷輸出。


②也可以用next()函數(shù)一個一個取迭代器中的元素,

? ?或者自帶的__next__()方法。

③將迭代器轉(zhuǎn)換為列表等。

④如果只想要某個元素或者某段切片,可以用islice()函數(shù)。

? ?第一個參數(shù)為迭代器,后面的參數(shù)同range()函數(shù)的參數(shù)。


迭代器的性質(zhì)

迭代器具有狀態(tài)信息。到達(dá)序列末尾時迭代器耗盡。(一次性)

迭代器經(jīng)常配合in / not in?判斷某元素是否在迭代器內(nèi)。


用in判斷時,python會從第一個元素遍歷可迭代對象直至找到或者到末尾。

第二次判斷13是否在迭代器中時,由于已經(jīng)遍歷取出了31之前的數(shù),所以已經(jīng)不在迭代器中了,返回False,因為迭代器的每個元素是一次性的。


當(dāng)想多次使用迭代器時,可以用tee()函數(shù)把迭代器拆分成互相獨立的多個迭代器。

第二個參數(shù)為拆分的數(shù)量,不寫時默認(rèn)為2。

▲tee()函數(shù)會緩存原始可迭代對象中的元素,如果原始可迭代對象很大或者無限的,那么使用tee()函數(shù)可能會消耗大量的內(nèi)存。

但是當(dāng)原迭代器被取出元素時,會影響到拆分出來的迭代器。


神奇的是,子迭代器雖然相互獨立,但會影響原迭代器。影響到了原迭代器,另一個子迭代器就會受影響。

可以看到原迭代器取出的元素子迭代器也同時被取出。所以拆分后不要用原迭代器為好。

對比列表和迭代器的內(nèi)存消耗

迭代器切片

把迭代器所有元素存到列表里內(nèi)存消耗上升3倍。

(當(dāng)然正規(guī)做法是回溯算法)



Python個人學(xué)習(xí)筆記 生成器與迭代器的評論 (共 條)

分享到微博請遵守國家法律
垣曲县| 涞水县| 绥宁县| 大渡口区| 和静县| 闸北区| 涟源市| 宁远县| 博白县| 宁阳县| 天门市| 福鼎市| 眉山市| 罗甸县| 钦州市| 措勤县| 贡山| 法库县| 萨嘎县| 辽宁省| 江山市| 南涧| 高邮市| 曲靖市| 喀什市| 英德市| 肥西县| 武川县| 乐昌市| 徐州市| 三亚市| 屯昌县| 上虞市| 德庆县| 噶尔县| 靖西县| 平潭县| 慈溪市| 安溪县| 长岛县| 西昌市|