好友
阅读权限30
听众
最后登录1970-1-1
|
甜萝
发表于 2022-2-23 20:15
# 用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 从这里学习的 但是始终无法理解这个求素数的代码。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|