廖雪峰 python 教程的有 2 个地方看不懂

2016-11-09 16:52:49 +08:00
 sensui7

用 Python 来实现这个算法,可以先构造一个从 3 开始的奇数序列:

def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n

注意这是一个生成器,并且是一个无限序列。

然后定义一个筛选函数:

def _not_divisible(n):
    return lambda x: x % n > 0

最后,定义一个生成器,不断返回下一个素数:

def primes():
    yield 2
    it = _odd_iter() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(_not_divisible(n), it) # 构造新序列
这个生成器先返回第一个素数 2 ,然后,利用 filter()不断产生筛选后的新的序列。
6150 次点击
所在节点    Python
26 条回复
zhuangzhuang1988
2016-11-09 23:04:16 +08:00
@sensui7 和数学没啥关系, 不要听别人瞎扯
20015jjw
2016-11-10 14:31:36 +08:00
@zhuangzhuang1988 给作者做过助教的飘过 这书 berkeley 没人看... 都直接学 61a...
sensui7
2016-11-10 15:03:31 +08:00
@20015jjw 这不就是 61a 的教科书吗?
20015jjw
2016-11-10 15:52:27 +08:00
@sensui7 但是没人看 我学 61a 的时候没人看 教 61a 的时候更没人看...
20015jjw
2016-11-10 15:53:22 +08:00
@sensui7 61a 自己的 lab/disc 写的太好(嘿嘿嘿都靠我们助教也)了 这个教科书太无聊了 所以...
zhuangzhuang1988
2016-11-10 20:20:29 +08:00
@20015jjw 好厉害。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX