使用过滤器迭代列表

时间:2014-12-31 12:38:15

标签: list loops filter lambda

因此我被要求使用filter()函数在列表上迭代函数,以便在应用函数后,只返回列表中的正值。 到目前为止,我有这个:

def positive_place(f, xs)
    ans = filter(lambda x: f(x) > 0, xs)
    return ans

我被特别要求不使用for循环(即使我更喜欢)。我对filter()不太熟悉,如果有人能告诉我哪里出错了,我会非常感激。上面的函数只返回我提供的列表中的正值。

1 个答案:

答案 0 :(得分:2)

您的filter功能正常。但是有一些错误:

  • 函数定义错误。最后应该包含:。与def positive_place(f, xs):

  • 类似
  • 如果您使用的是Python 3,它会返回一个过滤器对象。因此,您必须将其转换为列表。与return list(ans)

  • 类似

你的程序看起来像

def positive_place(f, xs):    
    ans = filter(lambda x: f(x) > 0, xs)
    return list(ans)