给定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)
答案 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)]
filter
带有给定lambda的
map
将丢弃索引并保留原始数字
为此示例留下[0,4]