как распечатать список, содержащий отдельные суммы списков - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь получить сумму списка списков, где вывод будет [6,2,10] для определенных списков ниже.

data = [[1,2,3], [2], [1, 2, 3, 4]]
output =[]
total = 0
for row in data:
  for val in row[0:len(row)]:
   total += val
output.append(total)
print(output)

Однако результаты этой программы [6, 8, 18].Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

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

data = [[1,2,3], [2], [1, 2, 3, 4]] 
print(list(map(sum, data)))
# [6, 2, 10]

Или список-понимание:

data = [[1,2,3], [2], [1, 2, 3, 4]]
print([sum(x) for x in data])
# [6, 2, 10]
0 голосов
/ 12 ноября 2018

Используйте list comprehension.

Каждый элемент в списке повторяемый , этот факт делает sum лучшим вариантом для этой задачи.

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> [sum(d) for d in data]
[6, 2, 10]

Теперь, если вы хотите знать, в чем заключалась ваша проблема ...

Поместите аккумулятор после цикла data , а подайте список после каждой строки loop:

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> output = []
>>> for row in data:
...     total = 0
...     for val in row[0:len(row)]:
...         total += val
...     output.append(total)
...
>>> output
[6, 2, 10]
...