filter和lambda:传递多个参数?

时间:2017-04-28 14:15:16

标签: python lambda filter arguments

我尝试打印一个可以被给定数字整除的数字列表。然而,控制台说:

lambda>() takes exactly 2 arguments (1 given)

代码:

inp1 = int(input("Enter a number: "))
inp2 = int(input("Enter a divisor: "))

result = list(filter(lambda x, inp2: x % inp2 == 0, range(inp2, inp1)))
print("Numbers divisible by", inp2, "are", result)

如何通过继续使用lambda和filter来解决这个问题?

2 个答案:

答案 0 :(得分:0)

lambda x之后忽略#inp1 = int(input("Enter a number: ")) #inp2 = int(input("Enter a divisor: ")) inp1 = 10 inp2 = 2 result = list(filter(lambda x: x % inp2 == 0, range(inp2, inp1))) print("Numbers divisible by", inp2, "are", result) 以使其再次运行。 lambda期待inp2作为一个论据。

Numbers divisible by 2 are [2, 4, 6, 8]

输出 = for ($i = 0; $i < count($request->worker_id); $i++) { $this->repairsService->addRepairWorker($request->worker_id[$i], $vehicle); }

答案 1 :(得分:0)

最简单的解决方法是给第二个参数一个默认值:

#inp1 = int(input("Enter a number: "))
#inp2 = int(input("Enter a divisor: "))
inp1 = 42
inp2 = 6

result = list(filter(lambda x, inp2=inp2: x % inp2 == 0, range(inp2, inp1)))
print("Numbers divisible by", inp2, "are", result)

输出:

Numbers divisible by 6 are [6, 12, 18, 24, 30, 36]