迭代器

迭代器

for循環的內部機制
  1. 首先獲取到迭代器
  2. 使用while循環獲取數據
  3. it.__next__() 來獲取數據
  4. 處理異常 try:XXX except StopIteration:break
list = [1,2,3]
it = list.__iter__()    #獲取迭代器
while True:
    try:
        el = it.__init__()  #獲取下一個元素
        print(el)
    except StopIteration:   #處理錯誤
        break

上面是for循環的底層原理python

for el in list:
    print(el)
怎麼檢查須要迭代的對象是可迭代對象:
  • 用dir()內置函數檢查=====> 若是是可迭代對象,打印出的內置函數會有 iter 函數。
  • 可迭代對象可使用__iter__()來獲取到迭代器
  • 迭代器裏面有__next__()
#非官方檢查方案
lst = [1,2,3,4,5]
it = lst.__iter__()

print("__iter__" in dir(it))
print("__next__" in dir(it))
# 官方檢查方案
form collections import Iterable    #可迭代對象
from collections import Iterator    #迭代器
 
 print(isinstance(lst, Iterable))    #判斷lst是不是可迭代對象
 print(isinstance(lst, Iterator))   #判斷lst是不是迭代器
總結
  1. Iterable: 可迭代對象。內部包含__iter__()函數
  2. Iterator: 迭代器。內部包含__iter__和__next__()。
  3. 迭代器特色:
    • 節省內存
    • 惰性機制
    • 不能反覆,只能向下執行
    • for循環
相關文章
相關標籤/搜索