前言

一个课程的学习记录,比较浅显

迭代器

是一种特殊的可遍历的对象,特殊在于

迭代器里的元素这能被遍历一次

好处呢?课程里说

迭代器的元素是被计算出来(通过__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 或者函数结束退出。

后记

感觉后边的课程自己的记录少了一点自己的思考,可能都是关于应用的吧,只是希望自己能记录一些自己当时的困惑,让自己的记录更有价值。

©著作权归作者所有:来自51CTO博客作者已经晚了too的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 数组函数的练习
  2. 搞懂作用域与闭包
  3. 学习vue实现双向绑定【附源码下载地址】
  4. 210331 JavaScript引入方式 变量与常量 函数
  5. js 引入方式,常量,变量,函数的声明和使用----0331
  6. 课程学习记录之 python高阶函数小计
  7. 函数作用域与闭包-回调函数-函数的多值返回类型方式
  8. 冒泡排序函数
  9. 【JS基础入门】JavaScript基础之作用域、闭包、迭代器、构造函数

随机推荐

  1. Android服务器搭建——Jsp+Servlet,返回Js
  2. Android开发者指南(1) ―― Android Debu
  3. Linux/Android——Input系统之InputReade
  4. Android技术点总结
  5. 【Android Developer】2.Android的第一个
  6. 使用约束布局(ConstraintLayout)构建灵活
  7. 更新Android SDK到3.0版本时,遇到Failed t
  8. Android菜单详解(一)——理解Android中的Me
  9. android 开发资源
  10. android之Menu