重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

python中的筛选函数 python 筛选函数

Python 中关于filter函数问题求教

看文字的话会很乱,和图一起看会好一点

创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为康保企业提供专业的成都做网站、成都网站制作、成都外贸网站建设康保网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

首先,it是个生成器(_odd_iter),并使n=3,随后,it作为一个生成器存在于filter对象中(迭代器),并使it为一个filter对象,经过循环,到达next语句,先计算it _odd_iter(生成器),生成了新的数之后,开始计算filter。第一次循环的时候第18行的代码相当于 it = filter(_not_divisible(3), it ),等号右面的it还在等待next调用生成值,生成值之后,就将它代入为lambda的x中……第二次循环的时候第18行代码变成 it = filter(_not_divisible(5), filter(_not_divisible(3), it ) ),同样等号右面的it仍然在等待next调用生成新的值

我刚看这个教程,不知道对不对。。。

对了我看见有一个人问把代码第18行改成 it = filter(lambda x: x % n 0, it)

会失去过滤功能,我觉得,lambda是一个临时函数,所以觉得像filter(div(5), filter(div(3), it))这种存在多个lambda临时函数的话是很奇怪的,

在调试时,发现filter只检测了一个n(最近被赋值的),相当于7%5,9%7这样,因此失去过滤素数功能。模拟一下,在将要输出5的时候,it = filter()的那行代码变为:

it = filter(lambda x : x % n 0 , filter (lambda x : x % n 0 , it ) ),it将值赋给x,但是,我觉得n被赋值时,会刷新其他lambda中的n,造成类似于 it = filter(lambda x : x % 5 0 , filter (lambda x : x % 5 0 , it ) )的情况

python中的filter函数怎么用

filter就是按条件筛选:

filter(bool,['spam','','ni'])

list(filter(bool,[''spam,'','ni']))

输出的结果为['spam','ni']

#按照bool型筛选,因为中间的‘’,为空,不是bool型所以过滤掉。

python 中用filter求素数的时候,这里的筛选函数是什么意思

首先定义一个函数判断是否为素数,如果这个数能被2~它的平方根中的任一数整除的话它就不是素数,否则就是素数。用flag为0或1标记,利用filter()筛掉flag为0的非素数。

#!/usr/bin/env python

#coding:utf-8

import math

def filter_prime(n):    #定义filter_prime函数

flag = 1    #设置flag,初始化为1

for i in range(2, int(math.sqrt(n)+1)):     #取2至平方根的数

if n%i == 0:    #判断是否是素数

flag = 0     #如果不是,flag设为0

if flag == 1:        #退出循环后判断flag,若为1(素数),则返回

return n

print filter(filter_prime, range(1,101))    #filter 1-100里的非素数


分享文章:python中的筛选函数 python 筛选函数
网页地址:http://cqcxhl.com/article/doohsjj.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP