python中的lambda说列表对象不可调用

a1l*_*ord -3 python lambda list filter

my_list = [3, 4, 7, 2, 9, 170]

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

g = f(my_list)
Run Code Online (Sandbox Code Playgroud)

有一个问题,这个lambda启动"列表对象不可调用"错误.这是一个非常简单的lambda,所以我不太清楚我在这里做错了什么

Wil*_*sem 7

你或许认为f是一个过滤器,它不是,f一个过滤的结果my_list.这是一个list,和发电机(一个filter在对象).

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

from functools import partial

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

g = f(my_list) # filter my_list
Run Code Online (Sandbox Code Playgroud)