吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1074|回复: 2
收起左侧

[求助] 如何理解python中用filter求素数

[复制链接]
甜萝 发表于 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 从这里学习的 但是始终无法理解这个求素数的代码。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ID88512 发表于 2022-2-24 00:23
本帖最后由 ID88512 于 2022-2-24 00:27 编辑

第一个函数定义n   第二个函数是传参  x在编辑器里应该是赋值了  或者调用随机数模块或者字典    然后除以第一个函数判断后返回的值 大于0应该print 一下  最后那个  是筛选   那个函数里面的商吧    然后又是赋值

哎,要看全部代码才行 东一个函数西一个函数  我也整不懂了 哈哈哈将就看吧
ID88512 发表于 2022-2-24 00:31
刚刚去看了 我就就说他有个字典   很好理解 。
你去百度搜搜还有更简单的写法。
Python 很多种写法看自己
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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