迭代器
迭代器
for循环的内部机制
- 首先获取到迭代器
- 使用while循环获取数据
- it.next() 来获取数据
- 处理异常 try:XXX except StopIteration:break
list = [1,2,3]
it = list.__iter__() #获取迭代器
while True:
try:
el = it.__init__() #获取下一个元素
print(el)
except StopIteration: #处理错误
break
上面是for循环的底层原理
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是否是迭代器
总结
- Iterable: 可迭代对象。内部包含__iter__()函数
- Iterator: 迭代器。内部包含__iter__和__next__()。
- 迭代器特点:
- 节省内存
- 惰性机制
- 不能反复,只能向下执行
- for循环

浙公网安备 33010602011771号