五月天青色头像情侣网名,国产亚洲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í)筆記 生成器與迭代器的評論 (共 條)

分享到微博請遵守國家法律
门头沟区| 布拖县| 衡山县| 深州市| 筠连县| 岢岚县| 沁阳市| 伽师县| 正安县| 广灵县| 景德镇市| 肥西县| 阳西县| 铜梁县| 高邮市| 辽阳县| 靖西县| 呈贡县| 南昌县| 临汾市| 沙雅县| 金沙县| 留坝县| 德江县| 中宁县| 赣州市| 金湖县| 彩票| 鹿邑县| 儋州市| 饶阳县| 根河市| 盘锦市| 河津市| 盐边县| 页游| 腾冲县| 鱼台县| 大宁县| 唐海县| 四川省|