迭代器

迭代器

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循环
相关文章
相关标签/搜索