2016-10-03 4 views
2

Я пытаюсь создать функцию, равную сумме каждой другой цифры в списке. Например, если список равен [0,1,2,3,4,5], функция должна быть равна 5 + 3 + 1. Как я могу это сделать? Мои знания о Python не распространяются гораздо дальше, чем на время и на петли. Благодарю.создание суммы нечетных индексов python

+1

'SUM (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 
Смежные вопросы