我有以下顺序:(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)
答案 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))]