如果我有一個列表,並且我想創建一個只包含原始列表的偶數值的列表,那麼我該怎麼做?在新列表中添加偶數值Python
我本來有:
list1 = [1,2,3,4,5]
list2 = []
for v in list1:
if v % 2 == 0:
list2 += v
print list2
如果我有一個列表,並且我想創建一個只包含原始列表的偶數值的列表,那麼我該怎麼做?在新列表中添加偶數值Python
我本來有:
list1 = [1,2,3,4,5]
list2 = []
for v in list1:
if v % 2 == 0:
list2 += v
print list2
列表理解是要走的路:
list1 = [1,2,3,4,5]
list2 = [i for i in list1 if i%2 == 0]
print list2 # => [2, 4]
list2 = [x for x in list1 if x%2 == 0]
如果你想擴展現有list2
(不一定是初始爲空):
list2.extend(v for v in list1 if v % 2 == 0)
如果沒有「初始值」爲list2
,只是想和你從頭開始構建它:
list2 = [v for v in list1 if v % 2 == 0]
你會發現,內部的部分是相同的 - 你可以用不同的方式,一部分(括號內創建新列表,作爲.extend
的參數來擴展現有列表,等等)。
您可以使用list comprehensions:
list2 = [x for x in list1 if x % 2 == 0]
list2 = [i for i in list1 if not i%2]
我覺得這是最可讀的解決方案:
list2 = filter(lambda x: x % 2 == 0: list1)
,或者如果你有多次使用此功能:
is_even = lambda x: x % 2 == 0
list2 = filter(is_even, list1)
@paxdiablo:那麼你的答案*你* q問題是:「不」,「不」,以及「不知道,因爲它不運行」('list2 + = v'會中斷)。他只是想要一些可行的代碼,現在他已經擁有了,讓我們給他一個機會,看看它是否足夠滿足他的需求。 – mhawke 2009-11-23 04:25:54