根据另一个列表的元素添加列表的元素

时间:2020-07-31 12:50:26

标签: python

这是我之前问过的另一个问题(Dataframe add element from a column based on values contiguity from another columns)的延续,如果我使用大熊猫DataFrame,则得到了解决方案,但是如果我有2个列表,则没有答案,这就是我在这里卡住了。

我有2个列表:

a=[2,3,4,1]
b=[5,6,7,2,8,9,1,2,3,4]

我想使用b的值添加a的元素的结果。 a = 2的第一个元素,因此我想从b中添加前两个元素(5+6)

a = 3的第二个元素,所以我想从b中添加下三个元素(7+2+8)
等等。

我尝试了a进行循环,但是总和总是从b的第一个元素开始。有没有一种方法可以获取我想要的结果而无需更改b或创建另一个列表?

5 个答案:

答案 0 :(得分:3)

这是您要找的吗?

a=[2,3,4,1]
b=[5,6,7,2,8,9,1,2,3,4]

c = []
index = 0
for item in a:
    c.append(sum(b[index: index + item]))
    index += item
print(c)

输出

[11, 17, 15, 4]

答案 1 :(得分:1)

numpy:

fontWithName

python:

function customReturn(myarray,interval){
    var return_array = [];    
    var i;
    for (i = 0; i <= myarray.length; i++) {
        if(i % interval == 0)
            return_array.push(myarray[i])
    }
    return return_array;
}

答案 2 :(得分:0)

我将使用 for (let date in data.timeline.cases) { if (lastDataPoint) { let newDataPoint = { x: date, y: data.timeline[casesType][date] - lastDataPoint, } chartData.push(newDataPoint); } lastDataPoint = data.timeline[casesType][date]; } 来获取下一组和的起始索引的运行和。然后,您可以将索引列表相对于自身偏移1来压缩,以确定每次迭代求和的切片。

numpy.cumsum

答案 3 :(得分:0)

无需创建新的中介列表,您可以执行以下操作:

[ sum( b[ sum(a[:i]): ][ :a[i] ] ) for i in range(len(a)) ]

尽管如此,它的计算量很大。使用构建列表c的for循环将是一种效率更高的方法,例如@Balaji Ambresh回答。

答案 4 :(得分:0)

wss