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(

试试这个:-

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

对于 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]

效率不是很高,但你可以做到:

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

最新更新