为什么将此通常会导致错误的python函数用于filter()

时间:2019-05-01 11:14:51

标签: python

def BiggerThan20(i)
   return i > 20

此函数用作filter()的论证。我仅对语句“ return i> 20”感到困惑,通常在调用时会导致错误,但在filter()中使用时不会出错。

2 个答案:

答案 0 :(得分:1)

return语句计算表达式i > 20(返回布尔值)并返回它,因此不会出现错误。过滤器根据返回值进行过滤。

答案 1 :(得分:0)

filter需要可调用(〜函数)作为第一个参数。 BiggerThan20是可调用的,因此可以使用:

def BiggerThan20(i):
   return i > 20

data = list(range(15, 25))
res = list(filter(BiggerThan20, data))
# [21, 22, 23, 24]

return i > 20是不可调用的;在函数定义之外甚至没有意义。但您可以使用lambda expression(〜一个无名函数)-这些又可以调用:

res = list(filter(lambda i: i > 20, data))
# [21, 22, 23, 24]