生成器
-
-
生成器
-
yield
-
yield return
-
yield from
-
-
生成器表达式,列表推导式
-
内置函数 I
-
-
昨日内容回顾作业讲解
-
可迭代对象:
-
可以更新迭代的实实在在值。
-
内部含有
'__iter__'
方法的。 -
str list tuple dict set range
-
优点:操作方法多,操作灵活,直观,
-
缺点:占用内存。
-
-
迭代器:
-
可以更新迭代的一个工具(数据结构)。
-
内部含有
'__iter__'``且含有__next__方法的
的。 -
文件句柄。
-
优点:节省内存。惰性机制。
-
缺点:不直观,速度相对慢,操作方法单一,不走回头。
-
-
格式化输出。
-
函数名的应用。
-
默认参数可变的数据类型坑。作用域的坑。
-
-
今日内容
-
生成器
-
生成器:python社区,生成器与迭代器看成是一种。生成器的本质就是迭代器。唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。
-
获取生成器的三种方式:
-
生成器函数。
-
生成器表达式。
-
python内部提供的一些。
-
-
-
生成器函数获得生成器:
1 函数 2 def func(): 3 print(111) 4 print(222) 5 return 3 6 ret = func() 7 print(ret) 8 9 生成器函数 10 def func(): 11 print(111) 12 print(222) 13 yield 3 14 a = 1 15 b = 2 16 c = a + b 17 print(c) 18 yield 4 19 ret = func() 20 # print(ret) 21 print(next(ret)) 22 print(next(ret)) 23 print(next(ret)) 24 一个next 对应一个yield 25
-
yield return
return:函数中只存在一个return结束函数,并且给函数的执行者返回值。 yield:只要函数中有yield那么它就是生成器函数而不是函数了。生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next。
-
吃包子练习题:
1 def func(): 2 l1 = [] 3 for i in range(1,5001): 4 l1.append(f'{i}号包子') 5 return l1 6 ret = func() 7 print(ret) 8 9 def gen_func(): 10 for i in range(1,5001): 11 yield f'{i}号包子' 12 ret = gen_func() 13 # [3号包子.] 14 for i in range(200): 15 print(next(ret)) 16 17 for i in range(200): 18 print(next(ret)) 19
-
yield from
1 def func(): 2 l1 = [1, 2, 3, 4, 5] 3 yield l1 4 ret = func() 5 print(next(ret)) 6 7 8 9 def func(): 10 l1 = [1, 2, 3, 4, 5] 11 yield from l1 12 ''' 13 yield 1 14 yield 2 15 yield 3 16 yield 4 17 yield 5 18 ''' 19 将l1这个列表变成了迭代器返回。 20 ret = func() 21 print(next(ret)) 22 print(next(ret)) 23 print(next(ret)) 24 print(next(ret)) 25 print(next(ret)) 26
-
-
生成器表达式,列表推导式
-
用一行代码构建一个比较复杂有规律的列表。
-
列表推导式:
-
循环模式:[变量(加工后的变量) for 变量 in iterable]
-
筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]
-
-
循环模式讲解
练习题:
-
-
内置函数 I
-
-
今日总结
-
生成器:***
-
生成器函数 yield
-
yield与return 区别。yield from
-
列表推导式,生成器表达式。 ***
-
内置函数:今天讲的内置函数,了解。
-
-
-
预习内容
-
lambda表达式。
-
内置函数 II.
-
闭包。
-