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

来源:互联网 发布:厦门java培训哪个好 编辑:程序博客网 时间:2024/05/18 00:45

迭代器是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 的使用时机,视需要而定~





原创粉丝点击