我有一个列表名称:将列表中的每个元素,然后将它们打印scucessively
my_list = [1,2,3,4,5,6]
我要输出到这个样子,1, 3(1+2),6(1+2+3), 10(1+2+3+4), ...
我怎么能做到这一点在Python?提前
我有一个列表名称:将列表中的每个元素,然后将它们打印scucessively
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])
这是假设你想在实际输出中的'(1 + 2)'。否则,我会和@ jamylak的答案一起去。 – jszakmeister 2013-04-06 09:53:42
我的答案只适用于3.2+,我错误地解释了这个问题,但这可能是OP实际上想要的 – jamylak 2013-04-06 10:01:50
非常感谢 – user1407199 2013-04-06 10:06:16
尝试使用下面的衬板:
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]
非常适合一个班轮,但可怕的巨大名单 – jamylak 2013-04-06 09:55:14
非常感谢你 – user1407199 2013-04-06 10:53:18
为I(0,len个(名单)): old_a =一个 old_b = B A = old_b B = old_a + old_b print a,b – user1407199 2013-04-06 09:49:18
我这样试过,但是我得到了列表中最后两个元素的总和。我们可以为此定义任何函数并调用该函数。 – user1407199 2013-04-06 09:50:16
您是否确实需要输出中的括号? – jamylak 2013-04-06 10:02:32