1.迭代器:
概念:迭代器是对集合内元素的一种访问方式
特点:
a.迭代器对象从可迭代对象的第一个元素开始访问,直到迭代完所有元素
b.迭代器在迭代过程中只能往前迭代,不能回退
c.迭代器和经典的for循环相比,没有下标,但可以使用内建函数enumreat()获取索引
d.迭代器是非线程安全的,因此应尽量使用不可变集合
e.迭代器不需要事先准备好所有元素,它本身会迭代到哪儿计算到哪,对程序的内存机制做出优化,又称惰性求值
f.迭代器提供了一个统一的集合的接口,只要实现_iter_()方法的对象便可以使用迭代器进行访问
实现迭代器的三种方式:
a.使用iter(可迭代对象)在小括号中括起来:(如下图Demo)
运行结果:1,2,3,4,5
b.使用类似于java中的foreach循环方式实现迭代器:(如下图Demo)
运行结果:1,2,3,4,5
c.在类中重写_iter_()方法:(如下图Demo)
运行结果:0,1,2,3,4
再就是注意:在python中迭代器的.next()方法是一只可以被调用的,当集合中的元素已经全部调用完了后继续调 用.next()方法,则会抛出StopIteration异常,在python中并没有hasnext()方法来判断可迭代对象中是否还有元素可以被迭 代,此时便可以对StopIteration异常进行捕获来判断
2.生成器:
1.概念:生成器就是一种迭代器
2.特点:
a.定义一个生成器往往比定义一个迭代器更见简介,
3.实现生成器的方式
a.使用yield将一个普通函数变为生成器函数(如下图Demo)
1.注意当调用一个生成器函数是,此时返回的将会是一个生成器
2.当第一次调用生成器的.next()方法时,生成器才会开始执行生成器函数,直到遇到yield时停止,之后每次调用.next()方 法 都会次上次暂停的地方开始