1 绪论
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
2 自定义迭代器
2.1 判断对象是否可迭代
isinstance
是一种判断对象类型的函数,和type
的功能差不多,但是使用的方法不同,具体的使用方法详见Python isinstance() 函数 | 菜鸟教程
使用isinstance(a, Iterable)
可以判断a
是否为可迭代,在使用Iterable
之前应该先导入:from collections import Iterable
,举个例子如下:
>> > a = [ 1 , 2 , 3 ]
>> > b = list
>> > c = {
1 : '1' , 2 : '2' , 3 : '3' }
>> > from collections import Iterable
>> > isinstance ( a, Iterable)
True
>> > isinstance ( b, Iterable)
False
>> > isinstance ( c, Iterable)
True
2.2 基于重写__getitem__
方法的自定义迭代器
这种方式并不常见,建议使用2.3中的方法
__getitem__
即利用索引获取值,用该方法书写迭代器的好处就是可以通过索引(即a[1]
这种形式)获取迭代器的值
下面展示通过修改__getitem__
方法手写python的range
方法
class MyRange :
"""创建一个自己的Range函数"""
def __init__ ( self, minn, maxn= None , step= 1 ) :
"""初始化MyRange"""
self. minn, self. maxn = ( 0 , minn) if maxn is None</