2012-04-27 155 views
0

我有包含這樣的嵌套列表的列表:在嵌套列表添加元素

[ [datetime.datetime(2000, 12, 10, 0, 0), 0.0011] , [datetime.datetime(2000, 12, 11, 0, 0), 0.0013 , [datetime.datetime(2000, 12, 12, 0, 0), 0.0014]] 

etc.. 

如何去添加子元素2×2這樣的:

總和(0.0011,0.0013) + 0.0014

然後把這個總和的結果添加到下一個子元素?

我基本上試圖複合這些值。

謝謝!

回答

2

要做到這一點,最簡單的方法是用the sum() builtingenerator expression

>>>items = [[datetime.datetime(2000, 12, 10, 0, 0), 0.0011], [datetime.datetime(2000, 12, 11, 0, 0), 0.0013 ], [datetime.datetime(2000, 12, 12, 0, 0), 0.0014]] 
>>>sum(item[1] for item in items) 
0.0038000000000000004 

編輯:

如果你想打印出求和的每一個階段的結果,要使用functools.reduce() (在2.x中是the reduce builtin)。

from functools import reduce 
import datetime 

items = [[datetime.datetime(2000, 12, 10, 0, 0), 0.0011], [datetime.datetime(2000, 12, 11, 0, 0), 0.0013 ], [datetime.datetime(2000, 12, 12, 0, 0), 0.0014]] 

def add_printing_result(a, b): 
    total = a+b 
    print(total) 
    return total 

reduce(add_printing_result, (item[1] for item in items)) 

這給了我們:

0.0024000000000000002 
0.0038000000000000004 
+0

謝謝你,但是這會給我總的(有趣的,因爲我正在使用減少功能很長的路要走)。我怎樣才能把它打印出來而不是總數呢? – 2012-04-27 01:26:18

+0

@Julz編輯提供該解決方案。 – 2012-04-27 02:00:28

0
sum = 0, myarr = [ [datetime.datetime(2000, 12, 10, 0, 0), 0.0011] , [datetime.datetime(2000, 12, 11, 0, 0), 0.0013] , [datetime.datetime(2000, 12, 12, 0, 0), 0.0014]] 

for(i in myarr): 
    sum+=i[1] 

我敢肯定有更好的方法來做到這一點(我不是專家的Python),但是這應該總結自己的價值觀正確,使得sum是子元素的總和。

+0

這是非常聯合國Python化與錯,我害怕。 ''var''不是Python中的一個關鍵字(意思是這個行是一個語法錯誤,更不用說列表文字了,它不會增加到正確數目的括號中),並且當你在列表上循環時,循環在它之上,不要遍歷一個範圍,然後使用索引進行訪問。 – 2012-04-27 01:09:26

+0

好的,謝謝。我最近主要使用JavaScript,因此'var'。 – 2012-04-27 01:10:57