迭代器(Python3)

# 迭代器协议:内部含有__iter__()方法的是可迭代对象,同时含有__iter__()和__next__()是迭代器,可用dir来查看对象内部含有的方法

# 当我们遇到一个新的变量,不确定它是否可for循环,就先判断一下:dir('变量')  看他有没有__iter__()方法

# 迭代器的好处: 1,能从容器中一个一个取值,会把所有的值都只取一遍,取到最后一个值的时候通过一个异常来自动结束循环

#                         2,节省内存:值是要一个现场给一个,而不是一下全部生成 :range 文件句柄

实例1:

>>> list1 = [1,2,3]

lterator = list1.__iter__()   # 可迭代的对象执行__iter__()方法后就是一个迭代器:listiterator object

print(dir(l))
print(dir(lterator))

>>> print(Iterator.__next__())  #迭代器执行__next__(),遍历每一个值,到最后一个时用一个异常来停止
1
>>> print(Iterator.__next__())
2
>>> print(Iterator.__next__())
3
>>> print(Iterator.__next__())

Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print(Iterator.__next__())
StopIteration

实例2:

扫描二维码关注公众号,回复: 9730149 查看本文章

>>>for i in list1:
    print(i)

1

2

3

# for循环的内部就是执行一个个__next__()

iterator = list1.__iter__()  先生成一个迭代器
>>> print(Iterator.__next__()) 
1
>>> print(Iterator.__next__())
2
>>> print(Iterator.__next__())
3
>>> print(Iterator.__next__())

猜你喜欢

转载自www.cnblogs.com/TestDeveloper/p/12457181.html