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 展开
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 展开
1个回答
展开全部
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(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)))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询