Element-wise addition of two list of different lengths?

前端 未结 3 498
面向向阳花
面向向阳花 2021-01-26 20:30

How to perform element-wise addition of different length lists?
Assuming \"0\" for missing elements.
Note: len(a) will always be less than or equal to len(b)

exa

相关标签:
3条回答
  • 2021-01-26 21:17

    There's an alternative zip that does not stop at the shortest: itertools.zip_longest(). You can specify a fill value for the shorter lists:

    from itertools import zip_longest
    
    result = [sum(n) for n in zip_longest(a, b, fillvalue=0)]
    
    0 讨论(0)
  • 2021-01-26 21:17

    You can use izip_longest:

    >>> izip_longest(a,b,fillvalue=0)
    <itertools.izip_longest object at 0x10bbd2520>
    >>> list(_)
    [(1, 1), (2, 2), (3, 3), (0, 4), (0, 5)]
    

    Then you can do:

    >>> [sum(t) for t in izip_longest(a,b,fillvalue=0)]
    [2, 4, 6, 4, 5]
    
    0 讨论(0)
  • 2021-01-26 21:31

    you can pad a with zeroes like this and use sum

    a=[1,2,3]
    b=[1,2,3,4,5]
    a[:] = [a[i] if i < len(a) else 0 for i,j in enumerate(b)]
    result=[sum(n) for n in zip(a,b)]
    print result
    

    results in

    [2, 4, 6, 4, 5]
    
    0 讨论(0)
提交回复
热议问题