埃氏筛法中的lambda表达式
来源:互联网 发布:java web进销存源码 编辑:程序博客网 时间:2024/05/13 22:58
张雪峰大神python教程里有一个利用filter函数实现埃氏筛法计算素数的代码,查了下lambda表达式,理解了这段代码的意思
#定义一个生成器,生成3开始的素数序列,因为埃氏筛法用到了素数序列def _odd_iter(): n = 1 while True: n = n + 2#定义一个筛选函数,放到filter里面判断素数def _not_divisible(n): return lambda x: x % n > 0#这里有一个lambda表达式,当一个素数传进来,lambda中的n接受到这个数,然后整个函数返回了一个lambda表达式 #素数生成器 def primes(): yield 2 #2是第一个素数 it = _odd_iter() # 生成一个对象,也是一个惰性序列 while True: n = next(it) # 返回it生成器生成的第一个奇数,3 yield n #3也要返回 it = filter(_not_divisible(n), it) # 构造新序列#打印for n in primes(): if n < 1000: print(n) else: break
有一个问题,不是特别懂:it = _odd_iter()
初始序列it,那么 it 序列中表示的就是整个奇数吗?
如果 it 中就是整个奇数序列,那么下面的内容就好理解了,因为就是埃氏筛法的计算过程了,但是如果不是我所理解的,下面的代码就不好理解了。。。
阅读全文
0 0
- 埃氏筛法中的lambda表达式
- C#中的Lambda表达式
- C++ 中的 Lambda 表达式
- C++中的Lambda表达式
- C++ 中的 Lambda 表达式
- python中的lambda表达式
- C++中的Lambda表达式
- java中的->:Lambda表达式
- C++ 中的 Lambda 表达式
- java中的Lambda表达式
- C++中的Lambda表达式
- C++中的Lambda表达式
- java中的lambda表达式
- C++中的lambda表达式
- C++中的Lambda表达式
- C++ 中的 Lambda 表达式
- LINQ中的Lambda表达式
- java8中的Lambda表达式
- GitHub push失败
- 使用OptionMenu在屏幕中自定义自己的菜单
- Java网络编程
- 胡兆进个人简历
- 前台与servlet交互乱码问题
- 埃氏筛法中的lambda表达式
- J
- 用Python一键搭建Http服务器
- 排序算法总结(6)--快速排序
- iOS开发网络篇
- 特长生模拟——采药
- 偏偏在面试的时候踏入一个大坑--360浏览器兼容模式
- stdcall 函数调用过程(以delphi为例),还有负数的补码
- 第5章 表单控件绑定