有没有办法像 python 中的斐波那契数列一样对每个第 n 个列表求和并成为一个新列表?

is there a way to sum every nth list like a fibonacci sequance in python and became a new list?

假设我们有一个 l 列表,它由 5 个或更多元素组成,我想计算列表中的每第 n 个和,就像斐波那契数列一样

l=[1,5,6,7,2]

最后我想要一个新列表 l2 显示 l 列表

中每个第 n 个元素的总和
1+5=6
5+6=11
6+7=13
7+2=9
l2=[0,6,11,13,9]

我试过 list2= [sum(l[i:i+i[2]])for i in range(0,len(l),2)] 但它说 int not scriptable 我尝试了更多只是卡住请帮助

使用 itertools.teepairwise 的一种方式:

from itertools import tee

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

[0, *map(sum, pairwise(l))]

输出:

[0, 6, 11, 13, 9]

你可以从 zip 做一个 list 理解,比如,

>>> l
[1, 5, 6, 7, 2]
>>> [0] + [x+y for x,y in zip(l, l[1:])]
[0, 6, 11, 13, 9]

或者代替列表理解,生成表达式,如

>>> [0, *(x+y for x,y in zip(l, l[1:]))]
[0, 6, 11, 13, 9]