这是我之前问过的另一个问题(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
或创建另一个列表?
答案 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