python中的filter()函数怎么用?特别是一个函数有多个输入参数时。

比如下面这个函数:deff(x,y):x=x/10.y=y*10returnx,ymap(f,range(2,10),range(2,10))运行正常;但是filter(... 比如下面这个函数:
def f(x,y):
x=x/10.
y=y*10
return x,y

map(f,range(2,10),range(2,10)) 运行正常;
但是filter()的里的参数该怎么写呢?
PS. 用的是Python 2.7
展开
 我来答
passepartoute
推荐于2016-09-30 · TA获得超过376个赞
知道小有建树答主
回答量:289
采纳率:100%
帮助的人:260万
展开全部
map是把函数调用的结果放在列表里面返回,它也可以接受多个 iterable,在第n次调用function时,将使用iterable1[n], iterable2[n], ...作为参数。

filter(function, iterable)
这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.

def f_large_than_5(x):
return x > 5

filter(f_large_than_5, range(10))

>>[6,7,8,9]
追问
如果那个函数有两个输入参数呢?filter函数该怎么写?比如上面说的f(x,y)
追答
filter只能接受两个参数(function, iterable) ,而且filter只能通过function的返回值来过滤列表,而不能修改列表中的值。
我不知道你的需求是什么。上面的f(x,y)的功能不能用filter来做。因为f(x,y)返回两个值,而filter只接受true或者false.
所以如果想要在filter里面传入多个变量,可以有一个变通的方法,把你需要传入的参数,包装成一个list,或者dict,再作为filter的参数.当然你的函数体也要相应的改动。

def f_x_lessthan_y(tuple1):
x,y = tuple1
return x < y

filter(f_x_lessthan_y, zip(range(5), range(1,6)))
或者
filter(f_x_lessthan_y, map(f,range(2,10),range(2,10)))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式