2016-11-17 75 views
1

我想用Python语言编写lambda函数和地图使用它来创建一个包含即使例如当前列表 的成员,我可以做到这一点没有拉姆达列表:拉姆达funtion可以返回任何

a = [1,2,3,4] 
def f(x): 
    if x % 2 == 0: 
    return x 
    else: 
    return 
print map(f,a) 
+1

这不是你可以纯粹用'map'和'lambda'完成的事情。 Lambda表达式(以及通常的函数/方法)不能返回任何内容,它们会返回某些内容或“无”。因此,最好的情况是,你可以得到'[None,2,None,4]' - 你需要一个'filter'步骤,或者只是使用列表解析'[x for x in a x%2 == 0]' 。 – jonrsharpe

回答

0

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是清单的一部分,使用filter()而不是map()作为:

>>> filter(lambda x: not x%2, a) 
[2, 4] 
2

filter在这里很好地工作。

>>> print filter(lambda x: x % 2 == 0, [1,2,3,4]) 
[2, 4] 

你也可以使用列表理解。重要的是,map的功能概念是将变换应用于可迭代类型的每个元素(比率为)。

作为过滤器,您可以根据需要保留或丢弃基于条件表达式的元素。请参考使用here