2017-08-12 77 views
0

我需要將未知數量的列表中的每個索引一起添加到一個列表中。通過索引添加未知數量的列表

我的意思的例子:

list_a = [1,2,3,4,5] 
list_b = [2,4,6,8,10] 
list_c = [3,6,9,12,15] 

def sum_lists(): 
    temp_list = [] 

    for index in range(len(list_a)): 
     temp_list.append(list_a[index] + list_b[index] + list_c[index]) 

    return temp_list 

total = sum_lists() 

我的示例代碼的預期結果將是:

total = [6,12,18,24,30] 

我將如何完成列表的未知量的總和,例如20個列表?我不需要在數以千計的列表中添加這些內容,但我不知道最初必須添加多少個列表。

任何幫助將不勝感激。所有的列表將具有相同的長度。

+0

如果你要得到一個列表的總和(如:'[1,2,3]→6') ,你會怎麼做? – Ryan

+2

'郵編'的名單。在得到的元組列表中,對每個元組的元素進行求和。查看如何使用'zip'和'sum'方法。 – Prune

+1

'[zip(list_a,list_b,list_c)]中的els的總和(els)]。正如@Prune所說,它使用['sum'](https://docs.python.org/3/library/functions.html#sum)和['zip'](https://docs.python.org /3/library/functions.html#zip)內置方法。 –

回答

0

創建一個列表的列表:

In [124]: big_list = [list_a, list_b, list_c] 

現在,zip舉起手來使用map適用sum每一個:

In [125]: list(map(sum, zip(*big_list))) 
Out[125]: [6, 12, 18, 24, 30] 

您還有其他的替代產品。例如,使用列表理解:

In [126]: [sum(x) for x in zip(*big_list)] 
Out[126]: [6, 12, 18, 24, 30] 
+0

啊,我在想你在哪裏。有一段時間沒有見過你。一秒鐘,我開始擔心;-) –

+0

@ChristianDean是的,一直在做一些旅行。希望你不要太想我了:p –

0

您可以將列表存儲在列表中並對它們進行求和。

你可能有這樣的事情:

list_a = [1,2,3,4,5] 
list_b = [2,4,6,8,10] 
list_c = [3,6,9,12,15] 

list_of_lists = [list_a, list_b, list_c] # this could be 20+ lists 

def sum_lists(): 
    temp_list = [] 

    for index in range(len(list_a)): 
     temp_list.append(sum([l[index] for l in list_of_lists])) 

    return temp_list 

total = sum_lists() 
-1

這是我的選擇:

list_a = [1, 2, 3, 4, 5] 
list_b = [2, 4, 6, 8, 10] 
list_c = [3, 6, 9, 12, 15] 

def sum_lists(*arg): 

    return [sum(i) for i in zip(*arg)] 


results = sum_lists(list_a, list_b, list_c) 
+0

這與我的回答有什麼不同? –