2016-10-03 73 views
2

我試圖創建一個函數等於列表中的其他數字的總和。例如,如果列表是[0,1,2,3,4,5],則函數應該等於5 + 3 + 1。我怎麼能這樣做?我對Python的知識並沒有比while和for循環更遠。謝謝。創建奇數索引的總和python

+1

'總和(L [1 :: 2])'。 – inspectorG4dget

回答

5

下面是一個簡單的一行:

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 
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