dlbest
发表于 2017-4-3 15:07:30
excellent
lbing89
发表于 2017-5-7 22:02:55
我觉得我只可以看懂字面意思
jli
发表于 2017-5-13 21:30:57
def add():
yield 2
x=2
while 1:
x=x+1
flag=1
for i in range(2,x):
if x%i==0:
flag=0
break
if flag:
yield x
a=0
for i in add():
if i<=200000:
a+=i
else:
break
print(a)
虽然前面验证得都对,可是到后面数越来越大得时候很久都不出答案,蛋疼{:10_249:}
wyh2006
发表于 2017-6-2 21:28:58
努力学习中!!!!!
秋名86
发表于 2017-6-6 04:11:49
原来小甲鱼这里搜刮了这么多好东西{:10_254:},我搜索异常代码过来的。
dahuangfeng
发表于 2017-6-6 14:56:28
看了之后神清气爽,解决了大部分问题,稍微有点困惑的是prime_generator.send(None)。
花寺情僧
发表于 2017-6-7 23:10:00
真心的看不懂
阿飞23
发表于 2017-6-18 01:42:40
老师辛苦了,还在研究中...
雪山一刀
发表于 2017-7-19 15:51:41
magical_infinite_range(start)这是什么函数?
持久银信
发表于 2017-8-7 11:08:05
{:10_257:}{:10_257:}{:10_257:}
木一
发表于 2017-8-17 13:31:45
看完了还是很懵逼{:10_266:}{:10_285:}
再续植物人
发表于 2017-8-20 18:23:40
{:5_110:}
hata16
发表于 2017-8-29 22:27:49
我有一个问题:
既然列表 元组 字符串都是迭代器,那为什么next()方法不能用呢???
JXZ
发表于 2017-11-12 18:48:44
例子:有趣的素数,get_primes的定义里append()的括号里少一个element
付盼
发表于 2017-12-24 16:18:22
虽然看不太懂,还是有收获的。谢谢小甲鱼老师~
小进同学
发表于 2018-1-11 20:55:04
看不懂send的用法和逻辑
zhang3911
发表于 2018-1-23 09:48:02
今天继续努力............
zhang3911
发表于 2018-1-23 09:48:40
努力以后找个好工作.........
木棉花-华工
发表于 2018-3-7 11:15:30
上面代码和对应的描述写的有点凌乱啊,,我傻傻分不清小甲鱼在分析哪段代码啊
况qiqi
发表于 2018-3-28 14:22:57
最后一段代码: 借用楼里鱼油的代码分析一下(感谢这位鱼油的代码,加了几个标签以后更易懂了)
import random
def get_data():
"""返回0到9之间的3个随机数"""
return random.sample(range(10), 3)
def consume():
"""显示每次传入的整数列表的动态平均值"""
running_sum = 0
data_items_seen = 0
while True:
print("——3——")#.send( )返回前的最后一个位置
data = yield
print("——2——") #.send( )调用后的第二个位置
data_items_seen += len(data)
running_sum += sum(data)
print('The running average is {}'.format(running_sum / float(data_items_seen)))
def produce(consumer):
"""产生序列集合,传递给消费函数(consumer)"""
while True:
data = get_data()
print('Produced {}'.format(data))
consumer.send(data)
yield
print("——1——")#next( )调用后的第一个位置
if __name__ == '__main__':
consumer = consume()
consumer.send(None)
producer = produce(consumer)
for _ in range(10):
print('Producing...')
next(producer)
运行时,首先通过consumer.send(None)启动生成器,运行到yield前一句,打印出——3——
然后打印proceducing(这里还没有学到),,,通过next()获取下一个值,,先打印出Produced ,,执行consumer这个生成器,,接着从上次停下的地方继续运行,data等于传入的参数也就是生成的随机数,打印——2——,计算打印出平均值,打印出——3——,停在yield之前,,返回到produce停在yield。。下一次执行再重复