五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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í)筆記 生成器與迭代器的評論 (共 條)

分享到微博請遵守國家法律
高碑店市| 杭锦旗| 昂仁县| 曲麻莱县| 天峻县| 迁安市| 团风县| 正宁县| 梁山县| 攀枝花市| 宁晋县| 兴化市| 合山市| 榆中县| 屯留县| 桦甸市| 青州市| 高要市| 南郑县| 和田县| 张家口市| 湟中县| 昌吉市| 宜兰市| 兴隆县| 海兴县| 景谷| 定边县| 凤冈县| 广汉市| 定陶县| 通州市| 稷山县| 康乐县| 古丈县| 常宁市| 安溪县| 商都县| 城固县| 临城县| 巴彦淖尔市|