假设我们有一个 l 列表,它由5个或更多的元素组成,我想像斐波那契数列一样计算列表中的每N个和
l
l=[1,5,6,7,2]
最后我想要一份新的名单 l2 它显示了 一 列表
l2
一
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 我试了更多只是为了坚持请帮忙
list2= [sum(l[i:i+i[2]])for i in range(0,len(l),2)]
int not scriptable
单向使用 itertools.tee 和 pairwise :
itertools.tee
pairwise
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]
你可以做一个 list 理解来自 zip 就像,
list
zip
>>> 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]