码迷,mamicode.com
首页 > 编程语言 > 详细

python基础学习迭代器和生成器

时间:2017-11-03 00:50:18      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:数据   方法调用   用法   执行   无法   实现   put   lis   迭代器   

可以直接作用于for循环的数据类型有一下几种

一类是几何数据类型,如 list , tuple  , dict , set ,str 等

二类是generator包括生成器和带yield方法的函数

这些可以直接作用于for 循环的对象统称为可迭代对象 Iterable

我们可以使用法法.isinstance判断一个对象是否是Iterable对象

 

生成器不但可以作用于for循环,还可以使用next()方法不断的调用并返回下一个值,直到最后抛出StopIteration异常,表示无法继续返回下一个值

可以被next()方法调用并不断返回下一个值的对象统称为迭代器,Iterator

把list,dict,str等可迭代对象变为迭代器可以使用iter()函数

 

生成器:

生成器的特点

     生成器是一个函数,而且函数的参数都会保留。

     迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的

yield 生成器的运行机制:

当你问生成器要一个数时,生成器会执行,直至出现 yield 语句,生成器把 

     yield 的参数给你,之后生成器就不会往下继续运行。 当你问他要下一个数时,他会从上次的状态。开始运行,直至出现yield语句,把参数给你,之后停下。如此反复

下面是使用yield 实现协程:

 1 def panduan():
 2     while True:
 3         cmd1 = (yield)
 4         print(cmd1)
 5 
 6 def main():
 7     cc = panduan()
 8     cc.__next__()
 9     while 1:
10         cmd = input(">>")
11         cc.send(cmd)
12 main()

 

python基础学习迭代器和生成器

标签:数据   方法调用   用法   执行   无法   实现   put   lis   迭代器   

原文地址:http://www.cnblogs.com/uyahs/p/7775417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!