I would like to know if anyone can suggest a way to sum lists that is faster than map(sum, zip(*list)).
Example:
import timeit
print timeit.Timer('''
[ (a[x]+b[x]+c[x]) for x in xrange(len(a)) ]
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
''').timeit(number = 1000)
print timeit.Timer('''
map(sum,zip(*d))
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
d = [a,b,c]''').timeit(number = 1000)
print timeit.Timer('''
[sum(x) for x in zip(*d)]
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
d = [a,b,c]''').timeit(number = 1000)
Results:
0.0317891459248 #list comprehension
0.0406545608382 #sum with zip
0.0532605665307 #map sum with zip
Note: I know I am nitpicking, but I’m just curious if anyone has a better suggestion.
How about this one?
Of course, this assumes that your lists contain some sort of numeric type…