我有一个列表名称:
my_list = [1,2,3,4,5,6]
我想输出看起来像这样,1, 3(1+2),6(1+2+3), 10(1+2+3+4), ...
我怎么能在 python 中做到这一点?感谢您提前回复
我有一个列表名称:
my_list = [1,2,3,4,5,6]
我想输出看起来像这样,1, 3(1+2),6(1+2+3), 10(1+2+3+4), ...
我怎么能在 python 中做到这一点?感谢您提前回复
在 Python 3.2+ 中,它就像这样简单:
>>> from itertools import accumulate
>>> nums = [1,2,3,4,5,6]
>>> list(accumulate(nums))
[1, 3, 6, 10, 15, 21]
total = 0
for i, element in enumerate(my_list):
total += element
print "%d (%s)" % (total, '+'.join(my_list[:i+1])
试试这个单行:
b = [sum(a[:i+1]) for i, x in enumerate(a)]
这不是超高效(这是轻描淡写的说法),因为你一次又一次地总结整个元素......
要获得更有效的解决方案,您可以执行以下操作:
result = []
for i, current in enumerate(a):
if result:
last = result[i - 1]
else:
last = 0
result.append(last + current)
print(result)
>> [1, 3, 6, 10, 15, 21]