Python:按递增顺序对序列中的元素求和,反之亦然

时间:2017-11-13 14:21:29

标签: python

我有以下顺序:(4,6,5,11) 我希望得到结果:(4,10,15,26)

有人可以帮助我吗?

q = list()
for i in enumerate(seq):
    q = [x[i] + x[i-1] for x in seq]

如果我想反过来怎么办?从(4,10,15,26)到(4,6,5,11)

3 个答案:

答案 0 :(得分:1)

试试这个: -

i = [4, 6, 5, 11]
j = [sum(i[:k+1]) for k in range(len(i))]
print(j)

答案 1 :(得分:1)

对于Python3,请使用itertools.accumulate

import itertools
s = (4, 6, 5, 11)
final_list = list(itertools.accumulate(s))

输出:

[4, 10, 15, 26]

对于Python2,您可以使用生成器:

def accumulate(s):
   val = 0
   for i in s:
      val += i
      yield val

print(list(accumulate((4, 6, 5, 11))))

输出:

[4, 10, 15, 26]

逆:

def inverse(s):
   first = s[0]
   second = 0
   yield first
   for i in s[1:]:
      yield i-first
      first = i

print(list(inverse([4, 10, 15, 26])))

输出:

[4, 6, 5, 11]

答案 2 :(得分:0)

效率不高但你能做到:

x= [4, 6, 5, 11]
y = [sum(x[0:i+1] for i in range(len(x))]