【问题标题】:Is there a shorter way to add each item of a list [duplicate]是否有更短的方法来添加列表的每个项目[重复]
【发布时间】:2026-01-19 05:30:02
【问题描述】:

我想以这种方式将两个列表组合在一起

def combine(list1, list2):
    list3 = []
    for i in range(max(len(list1), len(list2))):
        if i > len(list1)-1:
            list3.insert(i, list2[i])
        elif i > len(list2)-1:
            list3.insert(i, list1[i])
        else:
            list3.insert(i, list1[i] + list2[i])

    return list3

combined = combine([1, 2], [3, 4, 5, 6])
print(combined) # 4, 6, 5, 6

但我想知道是否有更短的方法可以做到这一点

【问题讨论】:

  • 这也有效。我没看到。

标签: python python-3.x


【解决方案1】:

你可以使用itertools.zip_longest:

import itertools

def combine(list1, list2):
    return [a + b for a, b in itertools.zip_longest(list1, list2, fillvalue=0)]

或者,推广到任意数量的参数:

import itertools

def combine(*args):
    return [sum(x) for x in itertools.zip_longest(*args, fillvalue=0)]

这实质上是同时遍历两个列表,用0 填充缺失的元素,然后对它们求和。

【讨论】: