DAY14(PYTHONS)生成器进阶】的更多相关文章

def average(): sum = 0 count = 0 avg = 0 while True: #循环 num = yield avg #遇到yield就停止,防止一开始除数为0导致崩溃 sum += num count +=1 avg = sum/count avg_g = average() #生成器获取 avg_g.__next__() #执行生成器的__next__()函数,跳到第一个yield之后 avg1 = avg_g.send(10) #执行生成器的send()函数,把…
迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭代的 2.可迭代的内部都有__iter__函数 3.只要是迭代器,一定可迭代 4.可迭代的对象使用__iter__方法就可以得到一个迭代器 5.迭代器中的__next__方法可以一个一个的获取值 例子 判断是否是可迭代类型 可以被for循环的类型都有__iter__()函数 dir()函数可以返回类…
十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends" a argument which becomes the result of the current yield expression in the generator function.   The send() method, like __next__(), returns the next v…
Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y…
生成器中取值的三种方法 方法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或者…
"" 迭代器 什么是迭代器(iterator) 器指的某种工具, 迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.1 再1.2 迭代的目的是要根据上一个结果,产生下一个结果,这是一个重复的过程,但不是单纯的重复 迭代器就是,一种根据上一个结果得到下一个结果的工具,简单地说就是一种获取数据的工具 可迭代对象 指的就是可以使用迭代器取出数据的对象 如何判断一个对象是否可迭代,就看这个对象是否提供迭代器,通过对象调用__iter__()来获取迭代器 所有的容器类型(包括字…
1,列表推导式 值 for 循环 2,生成器表达式 g=(i for i in range(10)) print(g) for i in g: print(i) 3,列表推导式与生成器表达式的区别 #括号不一样 #返回值不一样  ===>生成器表达式几乎不占内存 g =('鸡蛋%s'%i for i in range(10)) print(g) for i in g: print(i) 4,各种推导式 1)列表推导式: [每一个元素或者是和元素相关的操作  for  元素  in  可迭代数据类…
1.什么是迭代器 迭代是一个重复的过程,但是每次重复都是基于上一次重复的结果而继续 迭代取值的工具 2.为什么要用迭代器 迭代器的优点 ​ ①不依赖于索引取值 ​ ②更节省内存 缺点: ​ 1.不如按照索引取值方式灵活 ​ 2.取值一次性的,只能往后取,无法预测值的个数 3.为何要用迭代器: 可迭代对象:但凡内置有__iter__方法的对象 iterable :str\list\tuple\dic\set\文件 迭代器对象 iterator 即内置有__iter__,又有__next__方法的…
列表推导式 把需要用一个函数写成的小功能,利用一行表达式完成 例子: l = [1,2,3,4,5] # 所有的偶数都放到新的列表中 # 正常函数 def Lst(): li = [] for i in l: if i%2 == 0: li.append(i) return li li = Lst() print(li) # 列表推导式 ls = [i for i in l if i%2 == 0] print(ls) 练手题: # 30以内所有能被3整除的数 ls1 = [i for i in…