生成器和生成器函数以及各种推导式

1. 生成器
本质就是迭代器.
一个一个的创建对象
创建生成器的方式:
1. 生成器函数
2. 通过生成器表达式来获取生成器
3. 类型转换(看不到)
2. 生成器函数 (重点)
生成器函数中包含 yield , 返回数据和return差不多.
return会立即结束这个函数的执行
yield 可以分段的执行一个函数

生成器函数在执行的时候返回生成器. 而不是直接执行此函数

能向下执行的两个条件:
__next__(), 执行到下一个yield
send(), 执行到下一个yield, 给上一个yield位置传值

所有的生成器都是迭代器都可以直接使用for循环
都可以使用list()函数来获取到生成器内所有的数据

生成器中记录的是代码而不是函数的运行

        def func():
            print("我的天哪 ")

            yield "宝宝"

        gen = func() # 创建生成器.  此时运行会把生成器函数中的代码记录在内存
        当执行到__next__(), 运行此空间中的代码, 运行到yield结束.

优点: 节省内存, 生成器本身就是代码. 几乎不占用内存
特点: 惰性机制, 只能向前. 不能反复

3. 各种推导式 (诡异)
列表推导式 [结果 for循环 if]
字典推导式 {结果(k:v) for循环 if}
集合推导式 {结果(k) for循环 if}

4. 生成器表达式 (重点)
(结果 for循环 if)

原文地址:https://www.cnblogs.com/wangm-0824/p/10110508.html

时间: 2024-11-09 04:05:12

生成器和生成器函数以及各种推导式的相关文章

函数--生成器、生成器函数、各类推导式、生成器表达式

一.生成器. 二.生成器函数 三.各种推导式. 四.生成器表达式. 一.生成器. 生成器本质就是个迭代器,一个一个的创建对象, 创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 3.类型转换 二.生成器函数. 什么是生成器函数: 函数中包含了yield,此函数就是生成器函数,我们执行函数的时候,就是获取这个生成器.而不再是执行函数内容. 举例说明 def func(): print("111") return 222 ret = func() print(ret)

python高级内置函数和各种推导式的介绍:一行搞定的代码

一.知识要点 all 都为真 any 有真的 min 最小的 max 最大的 sum 求和 reversed 反转 sorted 排序 zip 对应合并 [] 列表推倒式 () 生成器 {} 字典推倒式 set 去重 if三元操作符 xx if x else y ennmerate 枚举,带索引 二. 代码 "1. all" # 参数为一个可迭代的对象(Iterable) m =[1, 2, 3, 4, ''] # 当然不是这样简答的使用 print(all(m)) def a1():

python函数知识五 推导式和内置函数一(了解)

17.推导式: 推导式:将for循环多行变成一行 list推导式:[] #普通模式 print([i for i in range(20)]) #循环模式 #[变量 for i in range(20)] print([i+1 for i in range(10)]) #筛选模式 #[变量(加工后) for i in range(20)] print([i for i in range(20) if i % 2 == 1]) 生成器表达器:() #普通模式 print((i for i in r

Python-- if判断、函数以及列表推导式

1.if判断 简单if判断 if exp: //执行语句 其中exp可以是一个表达式或者是任意元素,当exp为真,执行缩进以后的代码. 在python中,非0 和非null都是为真(True)的,只有0和null才为假(False). if 2>1: #此时的2>1为表达式,返回真 print('a') #因为表达式2>1为真,所以会执行print('a'),输出'a' if 1<2: #1<2是个表达式,但是返回假 print('a') #所以不会执行这句代码 if 1:

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from

一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 3.类型转换(看不到) 2.生成器函数(重点) (1)生成器函数中包含 yield关键字,返回数据和return差不多 return会立即结束和这个函数的执行 yield 可以分段的执行一个函数 (2)大坑(五星重点): 生成器函数在执行的时候返回生成器,而不是直接执行次函数 (3)能向下执行的两个

Python--Demo13--高级特性匿名函数、推导式、迭代器、生成器

学完函数,我们还需要知道一些让我们能够提高效率的高级特性: 使用lambda关键字来创建匿名函数: lambda表达式只是一个表达式,而不是是一个代码块,函数体比def简单很多: lambda表达式仅仅能够封装一些简单的逻辑: lambda表达式拥有自己的命名空间. >>> def plusitem(pam): ... return pam*pam ... >>> type(plusitem) <class 'function'> >>>

列表推导式----生成器表达式

列表推导式: 基本形式: [表达式  for  参数  in  可迭代对象]   或者 [表达式  for  参数  in  可迭代对象  if   条件] 实例: 1 l = [] 2 for i in range(100): 3 l.append('egg%s' %i) 4 print i 5 6 #不带if条件 7 l = ['agg%s' %i for i in range(100) ] 8 9 #带if条件 10 l = ['agg%s' %i for i in range(100)

Python3 三元表达式、列表推导式、生成器表达式

Python3 三元表达式.列表推导式.生成器表达式 三元表达式 表达式中,有三个元素 name = input("请输入姓名: ")ret = '输入正确' if name == 'aaa' else '输入错误'print(ret)  列表推导式 #1.示例# 方法1egg_list1 = []for i in range(10): egg_list1.append('鸡蛋%s' % i)print(egg_list1) #方法2egg_list2 = ['鸡蛋%s' %i for