前言
一个课程的学习记录,比较浅显
迭代器
是一种特殊的可遍历的对象,特殊在于
迭代器里的元素这能被遍历一次
好处呢?课程里说
迭代器的元素是被计算出来(通过__next__()方法)的,不是一直在内存中
将可遍历对象变为迭代器
iter方法,python内置的。 next方法,获取下一个元素的值
如果需要实现一个迭代器的类则需要实现以上两个方法(有前后下划线)。
生成器
是一种更高级的迭代器。
二者的区别:
创建方式不同( 如何不同,没去查 ) 生成器即是迭代器,前者是后者的进化 生成器有一些特殊方法是迭代器不具有的( 具体有哪些,没有查 )创建方式:
生成器表达式:生成器表达式的特点是使用小括号,这是它与列表解析的唯一区别,后者用的是中括号。#g是一个生成器 g = (x**x for x in range(1, 4))使用 Python 关键字 yield 编写的函数,叫做生成器函数,函数的返回值就是生成器
def fib(n): current = 0 a = b = 1 while current < n: yield a a, b = b, a + b current += 1上面的函数 fib 使用了 yield 关键字,那么它就是生成器函数,fib(5)的返回值是一个生成器 yield 的使用方法和 return 类似,它们都只能出现在函数内部。不同的是,return 可以返回有效的 Python 对象,而 yield 返回的是一个生成器。函数碰到 return 就直接返回了,而使用了 yield 的函数,到 yield 返回一个元素,当再次迭代生成器时,会从 yield 后面继续执行,直到遇到下一个 yield 或者函数结束退出。 后记
感觉后边的课程自己的记录少了一点自己的思考,可能都是关于应用的吧,只是希望自己能记录一些自己当时的困惑,让自己的记录更有价值。
查看更多关于课程学习记录之python迭代器和生成器的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did162790