怎么把别人网站模板下载出来,杭州黑马程序员培训机构怎么样,域联网站建设,学平面设计在哪里学生成器的本质就是迭代器#xff0c;写法和迭代器不一样#xff0c;用法一样。 获取方法#xff1a; 1、通过生成器函数 2、通过各种推导式来实现生成器 3、通过数据的转换也可以获取生成器 例如#xff1a; 更改return 为 yield 即成为生成器 该函数就成为了一个生成器函数…生成器的本质就是迭代器写法和迭代器不一样用法一样。 获取方法 1、通过生成器函数 2、通过各种推导式来实现生成器 3、通过数据的转换也可以获取生成器 例如 更改return 为 yield 即成为生成器 该函数就成为了一个生成器函数。再执行这个函数的时候就不再是函数的执行了而是获得这个生成器。执行生成器可以直接用__next__()来执行。 return和yield的区别 yield是分段开执行一个函数而return直接停止执行函数。 当程序运行完最后一个yield。那么后面继续进行__next__()程序会报错。 生成器的作用 例如 def cloth(): lst [] for i in range(0,10000): lst.append(衣服strt(i)) return lst cl cloth() 再看另一种方式 def cloth(): for i in range(0,10000): yield衣服str(i) cl cloth() print(cl.__next__()) print(cl.__next__()) print(cl.__next__()) print(cl.__next__()) 两个案例的区别第一种直接一次性全部拿出来会很占用内存。第二种使用生成器一次就一个。用多少生成多少生成器是一个一个的指向下一个。不会回去__next__()到哪指针就指到哪。下一次继续获取指针指向的值。 生成器函数函数中带有yield执行生成器函数的时候返回生成器 生成器特点 1、节省内存几乎不占用内存。应用于数据量比较大、而单次使用不会用太多数据量的场合 2、惰性机制 3、只能往前 send 和__next__()的区别 1.send 和next()都是让生成器向下走一次。 2.send可以给上一个yield的位置传递值不能给最后一个yield发送值。在第一次执行生成器代码的时候不能使用send()。 生成器可以使用for循环来获取内部的元素 def func(): print(111) yield 222 print(333) yield 444 print(555) yield 666 gen func() for i in gen: print (i) 结果 111 222 333 444 555 666 二、列表推导式生成器表达式以及其他推导式 1、列表推导式 替换成列表推导式 列表推导式是通过一行来构建需要的列表看起来代码简单但出现错误后很难排查。 推导式的常用写法 [结果 for变量 in 可迭代对象] 生成器表达式和列表推导式的语法基本上是一样的。只是把[]替换成()。 打印的结果就是一个生成器。可以使用for循环来循环这个生成器 生成器表达式和列表推导式的区别 a、列表推导式比较耗内存。一次性加载。生成器表达式几乎不占用内存。使用的时候才分配和使用内存。 b、得到的值不一样。列表推导式得到的是一个列表。生成器表达式获得的是一个生成器。 生成器的惰性机制生成器只有在访问的时候才取值即找他要才给值不找他要是不会执行的。 深坑生成器要值的时候才拿值。 def func(): print(111) yield 222g func() #此处生成一个生成器gg1 (i for i in g) # 生成器g1 数据来源于gg2 (i for i in g1) #生成器g2 来源于g1print(list(g)) # 获取g中的数据。这时func()才会被执行。打印111获取到222 g 获值完毕。print(list(g1)) #获取g1中的数据。g1的数据来源是g但是g已经取完了。g1也就没有数据了。print(list(g2))# 同g1 2、字典推导式 例如 在以下列表中从lst1中获取的数据和lst2中相对应的位置的数据组成一个新字典。 lst1 [jay,jj,sylar] lst2 [周杰伦,林俊杰,邱彦涛] dic {lst[i]:lst2[i] for i in range(len(lst1))} print (dic) 集合推导式 集合推导式可以帮我们直接生成一个集合。集合的特点无序不重复。所以自带去重功能。 总结推导式有列表推导式、字典推导式、集合推导式没有元组推导式。 生成器表达式(结果 for 变量 in 可迭代对象 if条件筛选) 生成器表达式可以直接获取到生成器对象。生成器对象可以直接进行for 循环 生成器具有惰性机制。 转载于:https://www.cnblogs.com/f-g-f/p/9671135.html