Element-wise addition of 2 lists?

后端 未结 16 1440
感动是毒
感动是毒 2020-11-22 07:48

I have now:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

I wish to have:

[1, 2, 3]
 +  +  +         


        
16条回答
  •  一个人的身影
    2020-11-22 08:39

    The others gave examples how to do this in pure python. If you want to do this with arrays with 100.000 elements, you should use numpy:

    In [1]: import numpy as np
    In [2]: vector1 = np.array([1, 2, 3])
    In [3]: vector2 = np.array([4, 5, 6])
    

    Doing the element-wise addition is now as trivial as

    In [4]: sum_vector = vector1 + vector2
    In [5]: print sum_vector
    [5 7 9]
    

    just like in Matlab.

    Timing to compare with Ashwini's fastest version:

    In [16]: from operator import add
    In [17]: n = 10**5
    In [18]: vector2 = np.tile([4,5,6], n)
    In [19]: vector1 = np.tile([1,2,3], n)
    In [20]: list1 = [1,2,3]*n
    In [21]: list2 = [4,5,6]*n
    In [22]: timeit map(add, list1, list2)
    10 loops, best of 3: 26.9 ms per loop
    
    In [23]: timeit vector1 + vector2
    1000 loops, best of 3: 1.06 ms per loop
    

    So this is a factor 25 faster! But use what suits your situation. For a simple program, you probably don't want to install numpy, so use standard python (and I find Henry's version the most Pythonic one). If you are into serious number crunching, let numpy do the heavy lifting. For the speed freaks: it seems that the numpy solution is faster starting around n = 8.

提交回复
热议问题