python - 为什么 lambda 要求 2 个参数,尽管给出了 2 个参数?

标签 python map filter lambda

这是我的代码:

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)

map 也会发生类似的事情。但是减少工作正常。我究竟做错了什么?我是否遗漏了使用过滤器或 map 所需的关键内容?

最佳答案

为什么要使用 2 个参数? filter()map() 需要一个只有一个参数的函数,例如:

filter(lambda x: x >= 2, [1, 2, 3])
>>> [2, 3]

求一个数的因数(你也可以用 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]

关于python - 为什么 lambda 要求 2 个参数,尽管给出了 2 个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751787/

相关文章:

twitter-bootstrap - 如何在 Bootstrap 上做 OpenLayers map 高度 100%

python - 用常量 x 映射 lambda x,y

java - 使用java的ldap搜索过滤器

python - 类(class)/ self 问题

python - 无法导入 pprint

python - 在Python中,urllib2给出错误

javascript - 我们可以将 .filter() 函数与搜索属性的条件规则一起使用吗?

python - 如何禁用输入输入直到双击?

c++ - map 的空闲内存<int, string>

Javascript 对 keyup 进行过滤