繁体   English   中英

Python映射Lambda过滤器使用IF的帮助

[英]Python map lambda filter help using IF

给定一个由N个数字组成的列表,请使用单个列表推导生成一个仅包含以下值的新列表:

(a)偶数,以及
(b)来自原始列表中具有偶数索引的元素

我正在寻找上述问题的解决方案。 如此处建议的那样有一种简单的方法可以解决该问题,但是我想知道是否有一种方法可以在“ FULL”输入列表中使用map,lambda和filter的组合。

我正在尝试做这样的事情,但它不起作用。

>>> map(lambda i,x : x%2==0 or (i+1)%2==0, range(0,len(l)-1),l)
[False, True, False, True, True]

理想情况下,我需要写一些类似的东西(添加“ x if”),但这不起作用。 有什么建议么?

map(lambda i,x : ***x if*** x%2==0 or (i+1)%2==0, range(0,len(l)-1),l)

该问题专门说“使用单个列表理解”。

话虽如此,您可以执行以下操作:

>>> map(lambda x: x[1], filter(lambda x: x[0] % 2 == 0 and x[1] % 2 == 0, enumerate([0, 1, 5, 4, 4])))

enumerate将使用数字本身压缩索引,从而产生[(0,0),(1、1),(2、5),(3、4),(4、4)]

仅当元组中的两个数字均为偶数时,才会满足给定lambda的filter

具有给定lambda的map将丢弃索引并保留原始数字

在此示例中,将[0,4]留给您

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM