2014-11-26 9 views
-1

Как найти четное число из кратных списка и добавить их все вместе?
Например:
У меня эту функцию, чтобы начать этот
сумма четных чисел в списках в списке python

def sum_even_lol(lol): 

и

sum_even_lol([[1,2,3],[6,5,4],[5,7,9]]) 

так что будет 2 + 6 + 4 (расчет осуществляется по коду)
должен return 12.

ответ

0

Я немного не понимаю, о чем вы спрашиваете, но эти идеи могут помочь.

Что-то вроде:

evens = [element for element in my_list if element%2 == 0] 

возвращает список, evens, который имеет только четные элементы из списка my_list.

Вы также можете использовать

list_sum = sum([my_list]) 

легко получить сумму чисел в списке. Я думаю, вы должны быть в состоянии объединить их вместе, чтобы делать то, что вы хотите отсюда!

+0

К сожалению я напечатал вопрос на моем телефоне, и у него есть определенные ограничения, чтобы увидеть, правильно ли я поставил вопрос в вопросе. –

3

вы можете преобразовать список списков в виде плоского списка, затем процеживают только четные числа, и добавить их в выражении генератора, как это:

def sum_even_lol(lol): 
    return sum(n for l in lol for n in l if not n % 2) 

или если вы найти вложенные генераторы менее читаемым, чем идеал, вы можете уменьшить с помощью sum() - но вы должны помнить, чтобы обеспечить пустой массив в качестве начального значения:

return sum(n for n in sum(lol, []) if not n % 2) 
+0

Это не работает должным образом. Невозможно добавить списки, используя sum() в python – Alfie

+0

@Alfie right, различная реализация 'sum()' из собственного дополнения .. вложенный генератор должен выполнить задание тогда – Aprillion

+0

Да .. :) Это работает как шарм .. :) – Alfie

1

вы можете найти эвен простого списка понимания:

evens = [item for i in lol for item in i if item%2==0] 

Сумма для возврата:

return sum(evens) 

В целом, определение функции будет выглядеть примерно так:

def sum_even_lol (lol): 
    evens = [item for i in lol for item in i if item%2==0] 
    return sum(evens) 
+0

ах, хорошо. Поэтому я использую [item for i in lol для элемента в i, если item% 2 == 0], чтобы получить четные числа из списков. Спасибо, что он отвечает :) –

+1

@ Dennis_Y Уверен .. Никаких проблем .. Всегда приветствую .. :) – Alfie

+1

Пожалуйста, отметьте решение как ответ, если вы удовлетворены. – Alfie

1

Вы можете использовать это:

sum(val for v in l for val in v if val % 2 == 0) 
Смежные вопросы