Суммирование значений списка внутри списка в Python - PullRequest
0 голосов
/ 10 февраля 2020

У меня небольшая проблема с этим битом Python кода. Задача заключается в следующем:

"Напишите функцию с именем sum_lists. Sum_lists должен принимать один параметр, который будет списком целых чисел. Sum_lists должен возвращать сумму добавления каждого числа из каждого списка .

Ниже приведены несколько строк кода, которые будут проверять вашу функцию. Вы можете изменить значение переменной (ей), чтобы проверить вашу функцию с разными входами.

Если ваша функция работает правильно, это будет первоначально печатать: 78 "

list_of_lists = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
print(sum_lists(list_of_lists))

Вот мой код, который мне удалось собрать до сих пор. Таким образом, я получаю вывод наподобие этого:

def sum_lists(list_of_lists):
    result = []

    #extract what list from the bigger list
    for listnumber in list_of_lists:
        sum = 0

        #add the value of the smaller list
        for value in listnumber:
            sum += value
        result.append(sum)

        #add the result values together
        #for resultvalue in result:
        #    result += resultvalue

    return sum(result)

Где значения каждого списка суммируются вместе, но все еще являются 3 отдельными значениями в секции result = []:

[10, 26, 42]

Когда я пытался return sum(result) Я получаю "TypeError: 'int' object is not iterable". Аналогично, когда я пытаюсь сделать еще один For l oop и складывать значения result = [] вместе, я получаю ту же ошибку TypeError, что сбивает с толку, потому что когда я сделал простая функция и применение sum () к оператору return Я получил суммированный вывод без проблем.

Я в тупике. У кого-нибудь есть предложения?

Ответы [ 3 ]

1 голос
/ 10 февраля 2020

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

def sum_lists(list_of_lists):
   return sum([sum(lst) for lst in list_of_lists])
1 голос
/ 10 февраля 2020

Вы перезаписали функцию sum своей переменной с тем же именем. Переименуйте переменную (я назвал ее total), и она будет работать, как и ожидалось.

list_of_lists = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

def sum_lists(list_of_lists):
    result = []

    #extract what list from the bigger list
    for listnumber in list_of_lists:
        total = 0

        #add the value of the smaller list
        for value in listnumber:
            total += value
        result.append(total)

        #add the result values together
        #for resultvalue in result:
        #    result += resultvalue

    return sum(result)

print(sum_lists(list_of_lists))

Ничто не мешает вам использовать сумму во внутреннем l oop, а также.

def sum_lists(list_of_lists):
    result = []

    for listnumber in list_of_lists:

        result.append(sum(listnumber))

    return sum(result)
0 голосов
/ 10 февраля 2020

переименуйте вашу переменную "sum", так как это зарезервированное ключевое слово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...