迭代器迭代是Python最强大的特性之一,是一种访问集合元素的方式。迭代器是一个记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到访问完所有元素。迭代器只能前进不能后退。迭代器有两个基本方法:iter()和next()。字符串、列表或元组对象可用于创建迭代器:示例:list=[1,2,3,4,5]it=iter(list)#创建迭代器对象print(next(it))#output的输出迭代器打印的下一个元素(next(it))是:12可以使用常规的for语句遍历迭代器对象:#!/usr/bin/python3list=[1,2,3,4]it=iter(list)#为其中的x创建一个迭代器对象:print(x,end="")执行上面的程序,输出结果如下:1234也可以使用next()函数:#!/usr/bin/python3importsys#importsysmodulelist=[1,2,3,4]it=iter(list)#创建迭代器对象whileTrue:try:print(next(it))exceptStopIteration:sys.exit()执行上面程序的输出如下:1234Generator在Python中,使用yield的函数被称为generator。与普通函数不同,生成器是返回迭代器的函数,只能用于迭代操作。生成器是迭代器更容易理解。在调用生成器运行的过程中,每次遇到yield,函数都会暂停并保存当前所有运行信息,返回yield的值,下次执行next()方法时从当前位置继续运行.调用生成器函数返回一个迭代器对象。下面的例子使用yield来实现斐波那契数列:#!/usr/bin/python3importsysdeffibonacci(n):#Generatorfunction-Fibonaccia,b,counter=0,1,0whileTrue:if(counter>n):returnyieldaa,b=b,a+b#相当于#c=a#a=b#b=c+bcounter+=1f=fibonacci(10)#f是迭代生成器,生成通过生成器whileTrue:try:print(next(f),end="")exceptStopIteration:sys.exit()执行上面的程序,输出结果如下:011235813213455
