本节主要内容 :

  1. 生成器
  2. 生成器函数
  3. 各种推导式
  4. 生成器表达式

一.生成器

什么是生成器.生成器的本质就是迭代器.

在python中有三种方式来获取生成器:

1.通过生成器函数

2.通过各种推导式来实现生成器

3.通过数的转换也可以获取生成器

二.生成器函数

函数内部有yield. yield返回->return

yield可以把函数分段执行

生成器函数被调用的时候.返回的是生成器

def func():

  yield

g=func()--得到生成器

生成器的用法和迭代器基本一致

__next__()开始执行生成器.执行到yield.直到没有yield.跑出StopIteration

send()可以给上一个yield传值,第一个和最后一个yield不用send()

生成器的特点:

1.节省内存

2.惰性机制

3.只能向前,不能反复.

三.各种推导式

列表推导式 [结果 for循环 if判断]

字典推导式{key:value for循环 if判断}

集合推导式 {key for循环 if判断}

四.生成器表达式

(结果 for循环  if判断)

特点:惰性机制,不访问__next__()就没有值.

只能向前,不能反复

生成器表达式和列表推导式的区别:

1.列表推导式比较耗内存.一次性加载.生成器表达式几乎不占内存.使用的时候才分配和使用内存

2.得到的值不一样.列表推导式得到的是一个列表.生成器表达式获取的是一个生成器.

深坑:生成器,只有要值的时候才拿值

总结:推导式有--列表推导式,字典推导式,字典推导式,集合推导式,没有元组推导式

生成器表达式:(结果 for 变量 in 可迭代对象 if 条件筛选)

生成器表达式可以直接获取到生成器对象.生成器对象可以直接进行for循环.生成器具有惰性机制.

python学习打卡 day12 生成器的更多相关文章

  1. Python学习---装饰器/迭代器/生成器的学习【all】

    Python学习---装饰器的学习1210 Python学习---生成器的学习1210 Python学习---迭代器学习1210

  2. 从零开始的Python学习Episode 12——迭代器&生成器

    生成器 列表生成式 用于快速地生成一个列表 a = [x*x for x in range(1,9)] print(a) #输出[1, 4, 9, 16, 25, 36, 49, 64] 也可以用于生 ...

  3. python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

    生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...

  4. Python学习--07迭代器、生成器

    迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). Python里使用for...in来迭代. 常用可迭代对象有 ...

  5. python学习------迭代器协议和生成器

    一.递归和迭代 递归:自己调用自己 举例解释:问路   A问B康明网络科技怎么走,B说我不是很清楚,我帮你问问C,C说我也不知道.我问问D,D说 就在兴隆.之后D返回结果给C,C返回结果给B,B返回结 ...

  6. python学习日记(迭代器、生成器)-乱七八糟

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  7. python学习 day13 迭代器,生成器,枚举对象

    一.复习 1.闭包:定义在函数内部的函数(被函数嵌套的函数) 2.装饰器:闭包的一个应用场景 -- 为一个函数添加新功能的工具 3.开放封闭原则:不能修改源代码,不能修改调用方式,但可以对外提供增加新 ...

  8. python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充

    本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...

  9. Python学习之迭代器和生成器

    那么首先什么是迭代器和生成器呢? 迭代器即迭代的工具,那么什么又是迭代呢?所谓迭代:迭代是一个重复的过程,每次重读即一次迭代,并且每次迭代的结果都是下一次迭代的初始值.例: l=[1,2,3] cou ...

随机推荐

  1. inux 驱动程序开发中输入子系统总共能产生哪些事件类型(EV_KEY,EV_ABS,EV_REL)

    inux 驱动程序开发中, 输入子系统总共能产生哪些事件类型?,以及分别是什么意思?详见如下: Linux中输入设备的事件类型有EV_SYN 0x00 同步事件EV_KEY 0x01 按键事件,如KE ...

  2. python--元组tuple

    元组与列表一样,都是序列.但元组不能修改内容(列表允许) 默认的,元组通过圆括号括起来 1. 使用type函数查看类型 numbers = (1,2,3,4,5,6,7,8,9,0) print(ty ...

  3. Java学习路线:Java中的位移运算符介绍

    学习java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,学到java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天给大家分享的技术知识是:ja ...

  4. java-工厂方法模式学习笔记

    1.工厂模式分三种 1.1 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例创建,如下图所示: 就以老司机开车(土豪开奔驰,宝马:屌丝骑自行车)为例,说明一下普通工厂模式: 首先,创 ...

  5. Kattis之旅——Factovisors

    The factorial function, n! is defined thus for n a non-negative integer: 0! = 1 n! = n * (n-1)! (n & ...

  6. li设置inline-block后,li左边出现空隙问题。

    方法1:在ul设置font-size=0,然后再li再单独设置font-size 方法2:li连着写不要换行,也可以解决. <ul> <li>测试1</li>< ...

  7. How to click on a point on an HTML5 canvas in Python selenium webdriver

    https://stackoverflow.com/questions/29624949/how-to-click-on-a-point-on-an-html5-canvas-in-python-se ...

  8. 作为php了解一下共享内存的概念及优缺点

    共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存:顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.一个进程可创建一 ...

  9. Vue小案例 之 商品管理------删除商品与提示

    实现删除商品功能 根据索引来进行删除商品: 实现删除商品的HTML: <!--显示表格--> <div class="table-warp"> <di ...

  10. 那些不错的 [ Html5 + CSS3 + Canvas ] 效果!

    apng制作工具:http://isparta.github.io/how.html apng制作文章:http://isux.tencent.com/introduction-of-apng.htm ...