Questo è un caso di utilizzo piuttosto buono per zip
.
>>> list1 = [1,2,3,4,5]
>>> list2 = [1,1,1,4,1]
>>> list3 = [1,22,3,1,5]
>>> list4 = [1,2,5,4,5]
>>> [sum(x) for x in zip(list1, list2, list3, list4)]
[4, 27, 12, 13, 16]
o se hai i dati come una lista di liste, invece di liste separate:
>>> data = [[1,2,3,4,5], [1,1,1,4,1], [1,22,3,1,5], [1,2,5,4,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27, 12, 13, 16]
Allo stesso modo, se si memorizzano i dati come dict
di liste, è possibile utilizzare dict.itervalues()
o dict.values()
a recuperare i valori della lista e l'uso che in modo simile:
>>> data = {"a":[1,2,3], "b":[3,4,4]}
>>> [sum(x) for x in zip(*data.itervalues())]
[4, 6, 7]
Nota che se i tuoi elenchi sono di lunghezza disuguale, zip
funzionerà fino alla lunghezza più breve della lista. Per esempio:
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27]
Se si desidera ottenere un risultato che include tutti i dati, è possibile utilizzare itertools.izip_longest
(con un appropriato fillvalue
). Esempio:
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in izip_longest(*data, fillvalue=0)]
[4, 27, 8, 4, 5]
In primo luogo, non creare 100 variabili denominate 'list1' ...; usa una lista di liste. – geoffspear