rit*_*att 9 python lambda map filter
这是我的代码:
filter(lambda n,r: not n%r,range(10,20))
我收到错误:
TypeError: <lambda>() takes exactly 2 arguments (1 given)
那么我试过:
foo=lambda n,r:not n%r
哪个工作正常.所以我认为这会奏效:
bar=filter(foo,range(10,20))
但又一次:
TypeError: <lambda>() takes exactly 2 arguments (1 given)
地图也会发生类似情况.但减少工作正常.我究竟做错了什么?我是否遗漏了使用过滤器或地图所需的重要内容?
你为什么用2个参数?filter()并且只map()需要一个带有单个参数的函数,例如:
filter(lambda x: x >= 2, [1, 2, 3])
>>> [2, 3]
Run Code Online (Sandbox Code Playgroud)
要查找数字的因子(您也可以用lambda替换它):
def factors(x):
return [n for n in range(1, x + 1) if x % n == 0]
factors(20)
>>> [1, 2, 4, 5, 10, 20]
Run Code Online (Sandbox Code Playgroud)
如果对键值集运行map或filter,请在(k,v)周围加上括号,例如:
.filter(lambda (k,v): k*2 + v)
Run Code Online (Sandbox Code Playgroud)