1.1迭代
符号生成器(符号生成器在线制作)
我们知道Python中有一些对象可以通过for来循环遍历,比如:列表、元组、字符等,以字符串为例,如下所示:
执行结果:
遍历过程就是迭代。
1.2可迭代对象
可迭代对象需具有iter()方法,它们均可使用for循环遍历,我们可以使用isinstance()方法来判断一个对象是否为可迭代对象,看下示例:
执行结果:
1.3迭代器
迭代器需要具有iter()和next()两个方法,这两个方法共同组成了迭代器协议,通俗来讲迭代器就是一个可以记住遍历位置的对象,迭代器一定是可迭代的,反之不成立。
iter():返回迭代器对象本身next():返回下一项数据迭代器对象本质是一个数据流,它通过不断调用next()方法或被内置的next()方法调用返回下一项数据,当没有下一项数据时抛出StopIteration异常迭代结束。上面我们说的for循环语句的实现便是利用了迭代器。
我们试着自己来实现一个迭代器,如下所示:
输出结果:
生成器是用来创建迭代器的工具,其写法与标准函数类似,不同之处在于返回时使用yield语句,关于yield,我们在使用Scrapy爬取去哪儿网景区信息中已经作了一些介绍,我们再来熟悉一下:
yield是一个关键字,作用和return差不多,差别在于yield返回的是一个生成器(在Python中,一边循环一边计算的机制,称为生成器),它的作用是:有利于减小服务器资源,在列表中所有数据存入内存,而生成器相当于一种方法而不是具体的信息,用多少取多少,占用内存小。
生成器的创建方式有很多种,比如:使用yield语句、生成器表达式(可以简单的理解为是将列表的[]换成了(),特点是更加简洁,但不够灵活)。看下示例:
示例1
执行结果:
示例2
执行结果:
参考:-cn/3/tutorial/classes.html#iterators
Python学习日记
发表评论