2009-11-23 59 views
0

如果我有一個列表,並且我想創建一個只包含原始列表的偶數值的列表,那麼我該怎麼做?在新列表中添加偶數值Python

我本來有:

list1 = [1,2,3,4,5] 
list2 = [] 
for v in list1: 
    if v % 2 == 0: 
     list2 += v 
print list2 
+0

@paxdiablo:那麼你的答案*你* q問題是:「不」,「不」,以及「不知道,因爲它不運行」('list2 + = v'會中斷)。他只是想要一些可行的代碼,現在他已經擁有了,讓我們給他一個機會,看看它是否足夠滿足他的需求。 – mhawke 2009-11-23 04:25:54

回答

7

列表理解是要走的路:

list1 = [1,2,3,4,5] 
list2 = [i for i in list1 if i%2 == 0] 
print list2 # => [2, 4] 
1
list2 = [x for x in list1 if x%2 == 0] 
3

如果你想擴展現有list2(不一定是初始爲空):

list2.extend(v for v in list1 if v % 2 == 0) 

如果沒有「初始值」爲list2,只是想和你從頭開始構建它:

list2 = [v for v in list1 if v % 2 == 0] 

你會發現,內部的部分是相同的 - 你可以用不同的方式,一部分(括號內創建新列表,作爲.extend的參數來擴展現有列表,等等)。

0

我覺得這是最可讀的解決方案:

list2 = filter(lambda x: x % 2 == 0: list1) 

,或者如果你有多次使用此功能:

is_even = lambda x: x % 2 == 0 

list2 = filter(is_even, list1)