Iterator與Iterable在Python中有什么區(qū)別-創(chuàng)新互聯(lián)

Iterator與Iterable在Python中有什么區(qū)別?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于做網(wǎng)站、成都做網(wǎng)站、溧水網(wǎng)絡推廣、小程序制作、溧水網(wǎng)絡營銷、溧水企業(yè)策劃、溧水品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供溧水建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:muchs.cn

Python中 list,truple,str,dict這些都可以被迭代,但他們并不是迭代器。為什么?

因為和迭代器相比有一個很大的不同,list/truple/map/dict這些數(shù)據(jù)的大小是確定的,也就是說有多少事可知的。但迭代器不是,迭代器不知道要執(zhí)行多少次,所以可以理解為不知道有多少個元素,每調(diào)用一次next(),就會往下走一步,是惰性的。

判斷是不是可以迭代,用Iterable

from collections import Iterable
isinstance({}, Iterable) --> True
isinstance((), Iterable) --> True
isinstance(100, Iterable) --> False

判斷是不是迭代器,用Iterator

from collections import Iterator
isinstance({}, Iterator) --> False
isinstance((), Iterator) --> False
isinstance( (x for x in range(10)), Iterator) --> True

所以,

凡是可以for循環(huán)的,都是Iterable

凡是可以next()的,都是Iterator

集合數(shù)據(jù)類型如list,truple,dict,str,都是Itrable不是Iterator,但可以通過iter()函數(shù)獲得一個Iterator對象

Python中的for循環(huán)就是通過next實現(xiàn)的

for x in [1,2,3,4,5]:
 pass

等價于

#先獲取iterator對象
it = iter([1,2,3,4,5])
while True:
 try:
  #獲取下一個值
  x = next(it);
 except StopIteration:
  # 遇到StopIteration就退出循環(huán)
  break

看完上述內(nèi)容,你們掌握Iterator與Iterable在Python中有什么區(qū)別的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:Iterator與Iterable在Python中有什么區(qū)別-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article28/degpcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、搜索引擎優(yōu)化、網(wǎng)站收錄App設計、網(wǎng)頁設計公司定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計