【问题标题】:lambda in python saying list object is not callablepython中的lambda说列表对象不可调用
【发布时间】:2017-06-16 12:46:44
【问题描述】:
my_list = [3, 4, 7, 2, 9, 170]

f = filter(lambda x: x%2==0, my_list)

g = f(my_list)

此 lambda 存在问题,会引发“列表对象不可调用”错误。这是一个非常简单的 lambda,所以我不太确定我在这里做错了什么

【问题讨论】:

  • 但是 filter 的结果是(在 Python-2.x 中)一个列表。不是过滤器,您在列表上进行了过滤。
  • f 是一个列表,您可以像调用它一样调用它,就像它是一个函数 f(my_list)
  • 我认为您不需要在第二次通过时将您的列表传递给 lambda f - f 应该只包含您正在寻找的过滤列表。
  • f = lambda my_list : filter(lambda x: x%2==0, my_list)
  • @a1letterword 你会得到一个TypeError: 'filter' object is not callable

标签: python list lambda filter


【解决方案1】:

您可能认为f 是一个过滤器,其实不是,fmy_list 上的过滤结果。那是 中的list 中的生成器(filter 对象)。

但是,您可以构造一个过滤器,例如使用functoolspartial 函数,例如:

from functools import partial

f = partial(filter,lambda x : x % 2 == 0) # construct a "filter"

g = f(my_list) # filter my_list

【讨论】:

  • 那么在这种情况下发生了什么?我被一个问题困住了一两个小时,似乎无法弄清楚错误是否就在我身上。 # 完成下面的函数。 f = lambda my_list: x%2==0, my_list if '' not in f.__name__: raise ValueError('Please write a lambda function') my_list = json.loads(sys.stdin.readline())对于 f(my_list) 中的 x: print(x)
  • 我只能编辑函数 lambda。出于某种原因,我不断收到一条错误消息,提示 my_list 未定义
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2021-03-09
  • 2017-10-04
  • 2012-12-06
  • 2017-03-27
  • 2011-09-02
相关资源
最近更新 更多