Python 筛选器和lambda:传递多个参数?

Python 筛选器和lambda:传递多个参数?,python,lambda,filter,arguments,Python,Lambda,Filter,Arguments,我试图打印一个可以被给定数字整除的数字列表。但是,控制台说: lambda>()正好接受2个参数(给定1个) 代码: 我应该如何通过继续使用lambda和filter来修复此问题?在lambda x之后省略inp2,使其再次工作。 lambda期望inp2作为参数 #inp1 = int(input("Enter a number: ")) #inp2 = int(input("Enter a divisor: ")) inp1 = 10 inp2 = 2 result = list(fil

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

lambda>()正好接受2个参数(给定1个)
代码:


我应该如何通过继续使用lambda和filter来修复此问题?

lambda x
之后省略
inp2
,使其再次工作。 lambda期望inp2作为参数

#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)

输出=
可被2整除的数字是[2,4,6,8]

在这种情况下,最简单的解决方法是给第二个参数一个默认值:

#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)
输出:

可被6整除的数字是[6,12,18,24,30,36]

为什么给它一个默认值要比让它为空好?可能重复?@Ludisposed:可能没什么关系,这取决于OP想要什么。如果像您所做的那样忽略它,则意味着当执行
lambda
函数时,所使用的值将是
inp2
中碰巧出现的值。当创建
lambda
时,将其设为默认参数值将使用
inp2
的值(因此不会受到运行前分配给
inp2
的另一个值的影响)。
#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)