鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] 提高你的 Python:解释 yield 和 Generators(生成器)

  [复制链接]
发表于 2018-12-27 00:18:22 | 显示全部楼层
先收藏,慢慢看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-7 21:27:24 | 显示全部楼层
小甲虫_ 发表于 2018-8-19 18:01
print_successive_primes(iterations, base=10):
请问这个iterations是什么意思啊 相当于self吗

iterations只是一个变量,让你输入想要得到10的几次幂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-14 10:53:33 | 显示全部楼层
一脸懵逼的进来,一脸懵逼的出去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-6 14:18:53 | 显示全部楼层
如果可以有第二部分就好了希望看下第二部分的send 函数的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-29 10:30:45 | 显示全部楼层
看不懂...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-4 16:21:10 | 显示全部楼层
format还可以这样用 get了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-11 21:02:36 | 显示全部楼层
看了看评论,果然自己翻译,最靠谱。。。
明天再找时间看一下最后那个例子就Ok了,然后就是实战运用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 21:49:33 | 显示全部楼层
老实说,写的 真的很难懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-28 14:41:56 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-23 16:01:07 | 显示全部楼层
import math
def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for current in range(3, int(math.sqrt(number) + 1), 2):
            if number % current == 0:
                return False
        return True
    return False

num = list(range(2000000))
summary = 0
for each in num:
    if is_prime(each):
        summary += each
print(summary)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-6 17:09:16 | 显示全部楼层
翅膀团 发表于 2015-10-31 20:56
小甲鱼老师,我被你误导了:返回一个可以迭代的包含素数1的结果。那个1原来只是个注释

我天 要不是看到这 我还以为是要包含素数1 呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 10:46:31 | 显示全部楼层
有点晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 18:58:24 | 显示全部楼层
前面那个案例看得云里雾里,直打哈欠。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-5 10:19:39 | 显示全部楼层
做了49课后题看这个很好理解,不过最后两个例子介绍send很秀, 不知道确实没法用,但是知道有这个东西了就可以实现很多操作了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-28 13:44:23 | 显示全部楼层
前半段比较好理解
后半段加入send就不是很好理解了
贴一段外面对send的解释吧:
send方法有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。
send方法和next方法唯一的区别是在执行send方法会首先把上一次挂起的yield语句的返回值通过参数设定,从而实现与生成器方法的交互。但是需要注意,在一个生成器对象没有执行next方法之前,由于没有yield语句被挂起,所以执行send方法会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-9 22:34:00 | 显示全部楼层
作为新人,硬着头皮看完了,但是没理解,收藏了,后面慢慢琢磨
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-16 15:14:23 | 显示全部楼层
头大 ,看着太晕了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 13:19:01 | 显示全部楼层
动动手:
0.
def myRev(string):
    str_index = len(string)
    while True:
            if str_index > 0:
                str_index -= 1
                yield string[str_index]
            else:
                break
            
            
1.
import math
def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for current in range(3, int(math.sqrt(number) + 1), 2):
            if number % current == 0:
                return False
        return True
    return False
a = sum([i for i in range(2000) if is_prime(i)])

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 19:19:54 | 显示全部楼层
other = yield foo并不能直接将foo赋值给other,需要调用send方法吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 22:11:14 | 显示全部楼层
都是子,就不想看了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 00:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表