Python 什么都不能返回的lambda函数

Python 什么都不能返回的lambda函数,python,lambda,Python,Lambda,我想用python编写一个lambda函数,并将其与map一起使用,创建一个甚至包含当前列表成员的列表 例如,我可以在没有lambda的情况下执行此操作: a = [1,2,3,4] def f(x): if x % 2 == 0: return x else: return print map(f,a) 这里很好用 >>> print filter(lambda x: x % 2 == 0, [1,2,3,4]) [2, 4] 您也可以使用列表理解

我想用python编写一个lambda函数,并将其与map一起使用,创建一个甚至包含当前列表成员的列表 例如,我可以在没有lambda的情况下执行此操作:

a = [1,2,3,4]
def f(x):
  if x % 2 == 0:
    return x
  else:
    return
print map(f,a)
这里很好用

>>> print filter(lambda x: x % 2 == 0, [1,2,3,4])
[2, 4]
您也可以使用列表理解。重要的一点是,
map
的功能概念是对iterable类型(1:1比率)的每个元素应用转换

其中,as-filter完全按照您的要求执行操作,根据条件表达式保留或丢弃元素。请参阅用法。

您的
map(f,a)
呼叫返回:

[None, 2, None, 4]
下面是相应的
lambda
函数,用于替换
map()
中的
f
,并返回相同的结果:

>>> map(lambda x:None if x%2 else x, a)
[None, 2, None, 4]
如果不希望
None
成为列表的一部分,请使用而不是as:


这不是纯粹用
map
lambda
就能做到的。Lambda表达式(以及通常的函数/方法)不能返回任何内容,它们返回某些内容或
None
。因此,您最多可以得到
[None,2,None,4]
-您需要一个
过滤器
步骤,或者只需使用列表理解
[x代表x,如果x%2==0]
>>> filter(lambda x: not x%2, a)
[2, 4]