【发布时间】:2018-05-04 05:51:23
【问题描述】:
如何在其中一个列表中组合从指定索引开始的多个列表,同时对各个索引处的值求和?
如果我有 3 个列表:
a = [1, 2, 3, 4, 5, 0, 0, 0, 0]
b = [2, 3, 4, 5, 6]
c = [5, 2]
如何才能将列表b 和c 插入a 中的任何位置,并且相应的索引会相加?
例如,我可以从a 的第一个索引开始插入列表b,也可以从a 的第五个索引开始插入列表c。这个输出看起来像:
NewList = [1, 4, 6, 8, 10, *11*, 2, 0, 0]
您可以看到,在上述a 的索引处添加列表b 和c 时,在第五个索引处有重叠,我想这样做。
我已经尝试将itertools 中的izip_longest 与切片方法结合使用:
result = [sum(n) for n in izip_longest(a[2:], b, fillvalue=0)]
但这会产生:
result = [5, 7, 9, 5, 6, 0, 0]
这切断了列表a 中的零和一索引,这是我不想要的。但是,我想使用izip_longest,因为我可以对不同长度的列表求和。
我想用任意数量的列表创建一个函数,所以a 可以是一个 len = 1000 的列表,我可以将任意数量的不同长度的不同列表插入到 @987654341 的任何位置@,我想要多少次,索引值都会求和。
【问题讨论】:
-
如编辑提案中所述。
[b]与b不同。不要混淆这两者。 -
我建议你简化你的问题。我承认我只读过一次,但很难理解你的意思。
-
为什么不先逐行做呢?完美需要时间list comprehension。我不认为使用列表理解这会很容易(或可能)。换句话说,没有一个单一的解决方案。
-
@GrzegorzOledzki 我的最终目标是绘制一个信号(例如正弦波),然后能够在我选择的任何位置将其他信号插入到该主信号中。所以我想将这些信号附加到列表中,通过添加额外的信号来操作它们,然后绘制。
标签: python list function indexing itertools