您的位置:首页 > 编程语言 > Python开发

python学习系列(六)迭代器生成器

2017-12-10 20:31 447 查看
迭代器是python的强大功能之一,是访问集合元素的一种方式

迭代器是一个可以记住遍历位置的对象(使用 yield)

迭代器从第一个元素开始迭代,知道全部访问完毕,只能向前不能后退

迭代器两个只要且重要的方法 :

iter()
next()


生成器:在python中,使用了 yield 的方法称作生成器(generater)

生成器是一个返回迭代器的方法,只能用于迭代操作,简单理解:生成器就是一个迭代器!

例如:使用迭代器生成斐波那契数列(C# 中可使用递归算法实现)



生成器 fun()方法会返回一个新的迭代器 f ,这个 f 中一直执行 next()方法,next()每执行一次就返回当前的一个值,直到所有值全部返回完毕,结束!

在 fun()方法里用到了 yield ,其实也可以不用 yield ,如下图:



两个程序运行结果是一样的,这样看似就会有个矛盾:既然不用 yield 也可以实现,那上面 yield 是不是多余的呢?

答案:不多于

那什么时候用 yield ,什么时候不用呢?

没有 yield 的迭代,相当于生成了一个有 n 个元素的完整的 List ,这个 List 会很大;当我们需要在进行遍历的时候,每次循环只得到一个元素,这时候 yield 就很有用了,(这让我想得到了 C# 的协程了:yield return new watiforseconds(*)



总之,这个 yield 的使用时机,视需要而定~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: