一区二区三区高清av电影,骚逼AAA免费,插鸡鸡网址在线观看视屏,龟头肏美女阴道少妇视频

Python:什么是迭代器和生成器

發(fā)布時間:2019/8/19 16:34:00


1.迭代器

迭代是Python非常強大的功能之一,是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷位置的對象,從集合的第一個對象開始,直到所有的元素被訪問完結束。

那究竟是什么叫迭代呢:當我們使用一個循環(huán)來遍歷某個東西時,這個過程本身就叫迭代。注意:迭代器迭代的元素只能往前不能后腿。

迭代器有兩個基本的方法:iter()next()。

 

字符串,列表或元組對象都可用于創(chuàng)建迭代器,如下所示:


輸出結果:



此外,迭代器對象可以使用for語句進行遍歷,如下所示:



輸出結果如下:




也可以使用next()函數實現上邊的功能:


Ps:其中,對于上面的next()函數,它用于返回迭代器的下一個項目。詳細的語法格式如下:

next(iterator[, default])

解釋:iterator表示可迭代對象,在[, default]中,中括號[]表示該項是可選內容,default用于設置在沒有下一個元素時返回該默認值,如果不設置且又沒有下一個元素,則會觸發(fā)StopIteration異常。


2.生成器

Python中,使用了yield的函數被稱為生成器(generator)。
跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。

調用生成器運行的過程中,每次遇到yield時函數會暫停并保存當前所有的運行信息,返回yield的值, 并在下一次執(zhí)行next()方法時從當前位置繼續(xù)運行。
調用一個生成器函數,返回的是一個迭代器對象。

 

下面用yield實現斐波那契數列,如下所示:


輸出結果如下:


什么情況下需要使用yield?
1.一個函數f,f返回一個list,這個list是動態(tài)計算出來的,并且這個list會占用很大內存。這個時候,我們希望每次調用這個函數并使用迭代器進行循環(huán)的時候一個一個的得到每個list元素而不是直接得到一個完整的list,通過這種方法可以節(jié)省內存,這個時候yield就很有用。
2.yield就像斷點,加了yield的函數,每次執(zhí)行到有yield的時候,會返回yield后面的值并且函數會暫停,直到下次調用或迭代終止。
3.yield后面可以加多個數值(可以是任意類型),但返回的值是元組類型的。





Copyright© 2004-2020 河南海騰電子技術有限公司 版權所有   經營性ICP/ISP證 備案號:B1-20180452   豫公網安備 41019702002018號    電子營業(yè)執(zhí)照

咸丰县| 淮北市| 庆城县| 松桃| 防城港市| 土默特右旗| 肥东县| 宁陕县| 定日县| 莎车县| 阜新| 乐山市| 电白县| 沂水县| 启东市| 常山县| 龙海市| 舞钢市| 五大连池市| 黄山市| 故城县| 桃源县| 朝阳县| 刚察县| 深泽县| 呼图壁县| 灌云县| 常德市| 龙州县| 通化市| 罗甸县| 澳门| 崇明县| 浙江省| 阿坝县| 阿拉尔市| 阜新| 江永县| 宁都县| 凤城市| 凤翔县|