day14 生成器的进阶】的更多相关文章

一.生成器的两种形式  1.生成器函数的应用 # def cloth(): # for i in range(100): # yield '衣服%s'%i # # g = cloth() # for i in g: # print(i) # for i in range(100): # print(g.__next__()) # # for i in range(50): # print(g.__next__()) 工厂做衣服 #监听文件末尾追加的例子 # def tail(): # f = o…
def generator(): print(123) content = yield 1 print('=======',content) print(456) arg = yield 2 '''''' yieldg1 = generator()g2 = generator()g1.__next__()g2.__next__()print('***',generator().__next__())print('***',generator().__next__()) g = generator…
1.生成器函数进阶 2.列表推导式 3.生成器表达式…
一.生成器函数进阶 需求:求取移动平均数 1.应用场景之一,在奥运会气枪射击比赛中,每打完一发都会显示平均环数! def show_avg(): print('你已进入显示移动平均环数系统!') a = yield avg = a/1 b = yield avg = (a + b)/2 print('目前的平均环数是:') yield avg generator = show_avg() generator.__next__() print(generator.send(10)) # 第一发打了…
生成器中取值的三种方法 方法1:next() 方法2:for 循环 方法3:数据类型的强制转换 def func(): for i in range(20): yield '赛车*{}'.format(i) ret = func() print(ret.__next__()) for i in ret: print(i) l1 = list(ret) print(l1) send() 方法 send 获取下一个值得时候给上一个yield位置传递一个数据 第一个 yiled 必须使用next 获取…
1,复习,迭代器:双下方法很少直接调用,一般都是通过其他语法触发的:迭代器一定可迭代,可迭代的通过调用iter()方法皆可以得到一个迭代器. 迭代器很方便使用,所有的数据只可以取一次,节省内存空间.生成器的本质就是迭代器,调用生成器函数之后,函数并不执行,而是返回一个生成器, 每次调用next方法会返回一个值,知道取完最后一个,在去取会报错 2,作业,写生成器实现:有一个文件,从文件里分段读取内容,在读取出来的内容前加上***返还给调用者,这个作业其实是给网络编程做铺垫 使用readline或者…
1.写生成器,从文件中读取内容,再每一行读取的内容前加上 ‘***’之后返回给用户 def func(filename): word = input('输入你想找的内容:') with open(filename,mode='r',encoding='utf-8') as f: for line in f: if word in line: yield line file = input('输入你要查找的文件:') g = func(file) for i in g: print('###'+…
迭代器(iterator) 可迭代对象: 可以使用迭代器取出数据的对象 判断一个对象是否是可迭代对象,就看这个对象有没有实现__iter__方法 所有的容器类型(包括字符串)都是可迭代的 迭代器的使用 1.通过调用对象的__iter__()方法得到迭代器 2.调用迭代器的__next__()方法来获取每一个值 如何判断一个对象是不是迭代器 如果对象实现了__next__方法,name就是一个迭代器 文件类型比较特殊,既是可迭代对象,又同时是一个迭代器 迭代器总结 迭代器是一种通用的取值方式 只有…
def generator(): print(123) content = yield 1 #content接收的是send传的值 print('=======',content) print(456) arg = yield 2 print('nihao') '''''' yield g = generator() ret = g. print('***',ret) # *** 1 ret = g.send('hello') #send的效果和next一样 # print('***',ret)…