如何理解python中用filter求素数
# 用filter求素数 代码部分无法理解def _odd_iter():
n = 1
while True:
n = n + 2
yield n
# 定义一个函数 变量 n = 1, 条件始终为真, 变量n等于自身加2 返回3 遇到yield关键字 程序停止执行 这是一个无限序列
def _not_divisible(n):
return lambda x: x % n > 0
# 这也是一个函数 不过 这个函数我无法理解 返回的是一个匿名函数 x 传入一个形参n x除以n的余数要大于零 才返回x
def primes():
yield 2
it = _odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列
# 这是第三个函数 返回2 程序停止执行 将第一个函数 _odd_iter(): 赋给it 进入while循环 用next函数把it计算出来 n等于5 返回5 程序停止执行
# 最后一行看不太懂 filter是将第一个参数作用到参数it中的每个元素上 根据返回结果是True还是False 来选择是否保留 但是还是无法理解最后一行
# https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000 从这里学习的 但是始终无法理解这个求素数的代码。 本帖最后由 ID88512 于 2022-2-24 00:27 编辑
第一个函数定义n 第二个函数是传参x在编辑器里应该是赋值了或者调用随机数模块或者字典 然后除以第一个函数判断后返回的值 大于0应该print 一下最后那个是筛选 那个函数里面的商吧 然后又是赋值
哎,要看全部代码才行 东一个函数西一个函数我也整不懂了 哈哈哈将就看吧 刚刚去看了 我就就说他有个字典 很好理解 。
你去百度搜搜还有更简单的写法。
Python 很多种写法看自己
页:
[1]