我们可以在返回true的函数中传递两个参数并过滤列表吗? 我试图从用户那里获得除数,并从列表中获取股息。
formGroup
答案 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()
总是将一个参数传递给该函数对象。