2013-04-06 213 views
0

我有一个列表名称:将列表中的每个元素,然后将它们打印scucessively

my_list = [1,2,3,4,5,6] 

我要输出到这个样子,1, 3(1+2),6(1+2+3), 10(1+2+3+4), ... 我怎么能做到这一点在Python?提前

+0

为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

+0

我这样试过,但是我得到了列表中最后两个元素的总和。我们可以为此定义任何函数并调用该函数。 – user1407199 2013-04-06 09:50:16

+0

您是否确实需要输出中的括号? – jamylak 2013-04-06 10:02:32

回答

2

在Python感谢答复3.2+它是像这样简单:

>>> from itertools import accumulate 
>>> nums = [1,2,3,4,5,6] 
>>> list(accumulate(nums)) 
[1, 3, 6, 10, 15, 21] 

Documentation

2
total = 0 
for i, element in enumerate(my_list): 
    total += element 
    print "%d (%s)" % (total, '+'.join(my_list[:i+1]) 
+0

这是假设你想在实际输出中的'(1 + 2)'。否则,我会和@ jamylak的答案一起去。 – jszakmeister 2013-04-06 09:53:42

+0

我的答案只适用于3.2+,我错误地解释了这个问题,但这可能是OP实际上想要的 – jamylak 2013-04-06 10:01:50

+0

非常感谢 – user1407199 2013-04-06 10:06:16

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] 
+0

非常适合一个班轮,但可怕的巨大名单 – jamylak 2013-04-06 09:55:14

+0

非常感谢你 – user1407199 2013-04-06 10:53:18

相关问题