python函数--生成器,生成器表达式,列表推导式
1. 今日内容大纲 2. 生成器 + yield + yield return + yield from 3. 生成器表达式,列表推导式 4. 内置函数 I 3. 今日内容 + 生成器 + 生成器:python社区,生成器与迭代器看成是一种。生成器的本质就是迭代器。唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。 + 获取生成器的三种方式: + 生成器函数。 + 生成器表达式。 + python内部提供的一些。 + 生成器函数获得生成器: ```python 函数 def func(): print(111) print(222) return 3 ret = func() print(ret) 生成器函数 def func(): print(111) print(222) yield 3 a = 1 b = 2 c = a + b print(c) yield 4 ret = func() # print(ret) print(next(ret)) print(next(ret)) print(next(ret)) 一个next 对应一个yield ``` + yield return return:函数中只存在一个return结束函数,并且给函数的执行者返回值。 yield:只要函数中有yield那么它就是生成器函数而不是函数了。生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next。 + 吃包子练习题: ```python def func(): l1 = [] for i in range(1,5001): l1.append(f'{i}号包子') return l1 ret = func() print(ret) def gen_func(): for i in range(1,5001): yield f'{i}号包子' ret = gen_func() # [3号包子.] for i in range(200): print(next(ret)) for i in range(200): print(next(ret)) ``` + yield from ```python def func(): l1 = [1, 2, 3, 4, 5] yield l1 ret = func() print(next(ret)) def func(): l1 = [1, 2, 3, 4, 5] yield from l1 ''' yield 1 yield 2 yield 3 yield 4 yield 5 ''' 将l1这个列表变成了迭代器返回。 ret = func() print(next(ret)) print(next(ret)) print(next(ret)) print(next(ret)) print(next(ret)) ``` + 生成器表达式,列表推导式 + 用一行代码构建一个比较复杂有规律的列表。 + 列表推导式: + 循环模式:[变量(加工后的变量) for 变量 in iterable] + 筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件] + 循环模式讲解 练习题: + 内置函数 I 4. 今日总结 1. 生成器:*** 2. 生成器函数 yield 3. yield与return 区别。yield from 4. 列表推导式,生成器表达式。 *** 5. 内置函数:今天讲的内置函数,了解。
+ 生成器:生成器就是迭代器,生成器是自己用python代码构建的。
+ 1,生成器函数
+ 2,生成器表达式
+ 3,python内部提供的。
+ 如何判断你函数,还是生成器函数?
+ yield
+ yield return
+ 吃包子。敲三遍。
+ yield from 将一个可迭代对象,变成一个生成器。
+ 列表推导式,生成器表达式。
+ 循环模式: [变量(加工后的变量) for 变量 in iterable]
+ 筛选模式: [变量(加工后的变量) for 变量 in iterable if 条件]
+ 内置函数?68.
+