生成器并行实例: send发送值被yield接受到赋值给baozi变量 #yield作用只是在这里保存这个值的当前状态然后返回之后在调用next,又回到yield #单纯调用next不会给yield传值,next只是在调用yield,send是调用yield并且传值 import time #协程 def consumer(name): print("%s 准备吃包子啦!" %name) while True: baozi = yield#send发送值被yield接受到赋值给baoz…
知识点: send(i) :唤醒yield,并将 i 的值传给 yield #!/user/bin env python # author:Simple-Sir # time:20181020 # 单线程并发:做一个包子,两个人吃 import time # 吃包子生成器 def chibaozi(name): print('%s想吃包子了!' %name) while True: baozi = yield print('第%s个包子来了,被%s吃了一半!'%(baozi,name)) # 逻…
列表生成式 列表生成式阅读量: 44   现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 二逼青年版 生成一个新列表b,遍历列表a,把每个值加1后存在b里,最后再把a=b, 这样二逼的原因不言而喻,生成了新列表,浪费了内存空间. >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [] >>> for i in a…
嘉馨学姐又双叒叕来吃包子了 QDUOJ 模拟 尺度法 点我进入OJ题目详情 题意 给你一串数,让你求长度最长的子串,这个字串满足里面没有重复出现的数字. 解题思路 使用一个标记数组,来标记每个数的第一次出现的位置,然后进行下面的模拟,详细看代码实现吧. 自己当时憨憨,没有想到需要进行离散化,第一次提交后返回Runtime Error后立刻意识到需要进心离散化,但是没时间了,哎,太可惜了.当然做这道题时,自己思路也不是很清晰,导致Debug了好长时间. 后来想了想,这个思路不就是使用尺取嘛. 代码…
[题目背景]: zm 喜欢上了吃包子. [题面描述]: zm 每天都要去买包子,但是为了减肥,zm 设置了一系列规则来控制他每天买包子的数量. 他随机了 n 个特殊字符串,然后用 n 个字符串来衡量接下来 Q 天每天该买多少个包子. 规则如下: 1.每天 zm 会生成两个字符串,他把一串称为 A 串,另一串称为 B 串. 2. 此时每个特殊字符串有一个值 F[i],当 A 串为第 i 个特殊字符串的前缀且 B 串为第i 个字符串的后缀时(可重叠),F[i]=1,否则 F[i]=0. 3.如果 F…
试题 算法训练 猴子吃包子 问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有馅的包子:问:猴子吃完这些包子要多久?结果保留p位小数. 输入格式 输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数. 输出格式 输出一行,包含1个实数,表示吃完所有包子的时间. 样例输入 4 3 2 20 30 15 2 样例输出 22.50…
关于生成器,主要有以下几个 关键点的内容 一.什么是generator ,为什么要有generator? 二.两种创建生成器方式 三.yield关键字 四.generator 两个调用方法 next() 和send() 一.什么是generator ,为什么要有generator? generator 是一种方式 ,是一种借助于循环,然后不断产生值的一种机制.(我是能理解机制这种描述,想了个例子来说明这个例子感觉又不对.) 那么为什么需要generator呢?一. 当你需要获取大量值的时候,我们…
列表生成式 a = [i+1 for i in range(10)] print(a) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 这就是列表生成式 生成器(generator) 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的. 如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的    list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器(gene…
python 生成器 & 迭代器 生成器 (generator) 列表生成式 列表生成式用来生成一个列表,虽然写的是表达式,但是储存的是计算出来的结果,因此生成的列表受到内存大小的限制 示例: a = [x ** 2 for x in range(5)] print(a) 输出结果: [0, 1, 4, 9, 16] 生成器 (generator) 生成器同样可以用来生成一个列表,但是生成器保存的是算法,在每一次调用 next 时才会计算出结果,因此生成的列表不会受到内存大小的限制 示例: a…
生成器迭代器+压缩文件 readme的规范 1软件定位,软件的基本功能2运行代码的方法:安装环境,启动命令3简要的使用说明4代码目录结构说明,更详细点可以说明软件的基本原理5常见问题说明 ======================================================== 列表生成器 [i*2 for i in range(10)] #开头的可为函数也可为方程 已经在内存中生成 存在并可调用 ======================================…