创建奇数索引python的总和

时间:2016-10-03 01:58:32

标签: python for-loop while-loop sum

我试图创建一个等于列表中每个其他数字之和的函数。例如,如果列表为[0,1,2,3,4,5],则函数应等于5 + 3 + 1。我怎么能这样做?我对Python的了解并没有比while和for循环更远。谢谢。

2 个答案:

答案 0 :(得分:6)

这是一个简单的单行:

In [37]: L
Out[37]: [0, 1, 2, 3, 4, 5]

In [38]: sum(L[1::2])
Out[38]: 9

在上面的代码中,L[1::2]说“从L获取第二个元素,从索引1开始”

这是一种自己完成所有繁重工作的方法:

L = [0, 1, 2, 3, 4, 5]
total = 0
for i in range(len(L)):
    if i%2:  # if this is an odd index
        total += L[i]

这是另一种方式,使用enumerate

L = [0, 1, 2, 3, 4, 5]
total = 0
for i,num in enumerate(L):
    if i%2:
        total += num

答案 1 :(得分:0)

>>> arr = [0,1,2,3,4,5]
>>> sum([x for idx, x in enumerate(arr) if idx%2 != 0])
9

这只是一个列表理解,只包含arr中具有奇数索引的元素。

在传统的for循环中进行说明:

>>> my_sum = 0
>>> for idx, x in enumerate(arr):
...     if idx % 2 != 0:
...         my_sum += x
...         print("%d was odd, so %d was added. Current sum is %d" % (idx, x, my_sum))
...     else:
...         print("%d was even, so %d was not added. Current sum is %d" % (idx, x, my_sum))
... 
0 was even, so 0 was not added. Current sum is 0
1 was odd, so 1 was added. Current sum is 1
2 was even, so 2 was not added. Current sum is 1
3 was odd, so 3 was added. Current sum is 4
4 was even, so 4 was not added. Current sum is 4
5 was odd, so 5 was added. Current sum is 9