2015-05-19 5 views
2

Я совершенно новичок в этом вопросе, и я хочу спросить, как суммировать все четные целые числа в списке (без использования функций (я еще не изучал их))? Например:Python. Как суммировать все четные целые числа в списке?

myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 

создать цикл

for i in myList: 
    if x % 2 ==0: 
    # I'm stuck here 

Как хранить эти значения для вычисления суммы?

+0

ли вы попробовать с помощью переменной? –

+0

Вы сказали 'for i в myList', а затем вы начали использовать x в' x% 2'. либо используйте i, либо используйте x. Затем вам понадобится переменная, которую вы можете добавить x, если это условие истинно. – JackV

ответ

7

Используя выражение генератора:

>>> myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
>>> sum(num for num in myList if not num%2) 
60 

Использование filter():

>>> myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
>>> sum(filter(lambda x: not x%2, myList)) 
60 

Использование ручного цикла:

>>> myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
>>> result = 0 
>>> for item in myList: 
...  if not item%2: 
...    result += item 
... 
>>> result 
60 
1

Вам нужно сохранить результат в переменной и добавить четные числа к переменной, например:

>>> myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
>>> result = 0 # Initialize your results variable. 
>>> for i in myList: # Loop through each element of the list. 
... if not i % 2: # Test for even numbers. 
...  result += i 
... 
>>> print(result) 
60 
>>> 
1

Вы можете отфильтровать все не-даже элементы, как так

my_list = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
even_list = filter(lambda x: x%2 == 0, my_list) 

, а затем суммировать вывод так:

sum(even_list) 
4

К сожалению, я должен был гольф этого. Может быть, он научит кого-то the ~ operator.

>>> myList = [1, 3, 5, 6, 8, 10, 34, 2, 0, 3] 
>>> sum(~i%2*i for i in myList) 
60 

Найдено другой с той же длиной:

>>> sum(i&~i%-2for i in myList) 
60 
+0

OK ... Я буду кусать ... '~ i% 2'? Я вижу, что 'i% 2' оценивается как' False', который затем вычисляется как '0 * i', но' ~ '? –

+0

... и к тому времени, когда я отправил свой комментарий, вы добавили бы это в редактирование. Благодаря! –

+0

@ DougR. Nah, '' 'имеет наивысший приоритет этих трех. Один из эффектов заключается в том, что он изменяет паритет числа, что очень удобно здесь. –

Смежные вопросы