>>fromcollecti" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python函數編程——迭代器

系統 1541 0

Python函數編程——迭代器

我們已經知道,可以直接作用于 for 循環的數據類型有以下幾種:

1、類是集合數據類型,如 list 、 tuple 、 dict 、 set str 等;

2、一類是 generator ,包括生成器和帶 yield 的generator function。

這些可以直接作用于 for 循環的對象統稱為 可迭代對象:Iterable,可迭代的意思就是可遍歷、可循環。

可以使用 isinstance() 判斷一個對象是否是 Iterable 對象:

          
            >>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False
          
        

而生成器不但可以作用于for循環,還可以被next()函數不斷調用并返回下一個值,直到最后拋出StopIteration錯誤表示無法繼續返回下一個值了。

可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator。

生成器都是 Iterator 對象,但 list 、 dict 、 str 雖然是 Iterable ,卻不是 Iterator 。

list 、 dict 、 str Iterable 變成 Iterator 可以使用 iter() 函數:

          
            >>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
          
        

你可能會問,為什么 list dict str 等數據類型不是 Iterator ?

這是因為Python的 Iterator 對象表示的是一個數據流,Iterator對象可以被 next() 函數調用并不斷返回下一個數據,直到沒有數據時拋出 StopIteration 錯誤??梢园堰@個數據流看做是一個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過 next() 函數實現按需計算下一個數據,所以 Iterator 的計算是惰性的,只有在需要返回下一個數據時它才會計算。

Iterator 甚至可以表示一個無限大的數據流,例如全體自然數。而使用list是永遠不可能存儲全體自然數的。

總結

凡是可作用于 for 循環的對象都是 Iterable 類型;

凡是可作用于 next() 函數的對象都是 Iterator 類型,它們表示一個惰性計算的序列;

集合數據類型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不過可以通過 iter() 函數獲得一個 Iterator 對象。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本久久免费 | 在线视频一区二区三区 | 天天天天天天操 | 日日操免费视频 | 性欧美处| 高清视频 一区二区三区四区 | 男人爱看的网站 | 福利视频久久 | 日本不卡视频免费的 | 日本免费网址 | 中国一级特黄真人毛片免 | 一级色网站 | 免费一级毛片不卡不收费 | 国产精品久久久久久久久ktv | 成人国产精品久久久免费 | 美国毛片aaa在线播放 | 国产精品21区 | 国产中文字幕第一页 | 九九色 | 国产日韩精品一区二区在线观看 | 麻豆精品久久久一区二区 | 久久久国产这里有的是精品 | 欧美成人私人视频88在线观看 | 成人国产精品一级毛片了 | 久久久久久久九九九九 | 九九久久国产精品大片 | 欧美成人高清免费大片观看 | 精久久| 日韩欧美一区二区三区不卡 | 久久精品亚洲日本筱田优 | 九九精品热线免费观看6 | 亚洲 欧美 卡通 在线 另类 | 亚洲欧美不卡 | 亚洲精品二三区伊人久久 | 久久成人国产精品 | 欧美成免费| 亚洲精品乱码久久久久 | 久久99国产精品视频 | 精品一久久香蕉国产线看播放 | 亚洲国产精品视频 | 精品欧美一区二区三区 |