簡體   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