如何在Dart中通过对应元素相加合并两个列表?
解决方案
要实现两个列表对应元素相加,且保留较长列表超出部分的元素(相当于短列表缺失位置补0相加),可以用以下两种方法:
方法一:手动遍历索引
通过获取两个列表的最大长度,逐个索引判断元素是否存在,存在则取对应值,否则用0代替,再相加存入结果列表:
list1 = [1,3,9,7] list2 = [1,2,3,4,5] max_length = max(len(list1), len(list2)) result = [] for i in range(max_length): val1 = list1[i] if i < len(list1) else 0 val2 = list2[i] if i < len(list2) else 0 result.append(val1 + val2) print(result) # 输出: [2, 5, 12, 11, 5]
方法二:使用itertools.zip_longest
Python标准库的itertools.zip_longest可以自动对齐两个列表,用指定值填充短列表的缺失部分,再通过列表推导式完成相加:
from itertools import zip_longest list1 = [1,3,9,7] list2 = [1,2,3,4,5] result = [a + b for a, b in zip_longest(list1, list2, fillvalue=0)] print(result) # 输出: [2, 5, 12, 11, 5]
说明:
zip_longest默认填充None,这里指定fillvalue=0,刚好符合短列表缺失位置补0相加的需求,代码更简洁。
内容的提问来源于stack exchange,提问作者Deivid Amarante
相关产品推荐
相关产品推荐

