Python map lambda filter帮助使用IF

时间:2015-10-06 02:42:24

标签: python dictionary lambda reduce

  

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

     

(a)偶数,和
  (b)来自原始清单中具有偶数指数的元素

我正在寻找上述问题的解决方案。正如建议here,有一种简单的方法可以解决它,但我想知道是否有一种方法可以在" 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如果"),但这不起作用。有什么建议吗?

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

1 个答案:

答案 0 :(得分:2)

问题明确地说“使用单一列表理解”。

有人说过,你可以这样做:

>>> 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]