可以将多少个参数传递给filter()

时间:2016-07-19 15:56:39

标签: python lambda filter

我们可以在返回true的函数中传递两个参数并过滤列表吗? 我试图从用户那里获得除数,并从列表中获取股息。

formGroup

3 个答案:

答案 0 :(得分:2)

是的,如果您在周围范围内定义了divisor,则可以。

但是,你不会需要再将它用作参数:

divisor = int(raw_input())
ans = filter(lambda x: x % divisor==0, new_list)
print ans

答案 1 :(得分:0)

您的方法中有两个错误:

(1)您不需要将divisor定义为lambda的第二个参数,因为它是由input语句初始化的。

(2)你应该只将函数引用传递给filter,而不是调用函数。

new_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print "Get the divisor"
divisor = int(input())

h = lambda x: x % divisor == 0
ans = filter(h, new_list)
print ans

答案 2 :(得分:0)

您不需要传递divisor作为参数;它只是作为闭包

提供
new_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print "Get the divisor"
divisor = int(raw_input())  # on Python 2, you want to use raw_input

# divisor is taken from the parent scope here
h = lambda x: x % divisor == 0
ans = filter(h, new_list)
print ans

请注意,您需要将函数对象作为filter()的第一个参数传递,而不是调用函数的结果。 filter()总是将一个参数传递给该函数对象。