Задать вопрос
@Timebird

Как создать список с суммами элементов другого списка?

Здравствуйте! Вопрос в следующем.

Имеется список_1, в котором, допустим, 80 элементов. Нужно присвоить каждому из этих элементов список с суммой до индекса этого элемента.
Например.

Второму элементу присвоить список с суммой первого и второго элементов списка_1.
Третьему элементу присвоить список с суммой первого, второго и третьего элементов списка_1.
Четвертому элементу присвоить список с суммой первого, второго, третьего и четвертого элементов списка_1.
и т. д. до 80-го.

Вот тут пытаюсь это сделать, но безуспешно:
sum = 0
for elem in range(int(list_1[1]), int(list_1[-1])):
    list_with_summs[elem] = [] #сначала на каждый из элементов создаю свой список
    sum += elem #потом считаю сумму до соответствующего элемента
    list_with_summs[elem].append(sum) #соответствующему списку присваиваю соответствующую сумму
print('List with sums: ', list_with_summs)

list_1 подаётся на вход.
  • Вопрос задан
  • 993 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
BedwaRe
@BedwaRe
Пиши код
Честно говоря, не совсем понял, из чего и что Вы хотели получить, но надеюсь код ниже Вам поможет.
sum = [2, 3, 2, 5, 6]
res = []
for k,v in enumerate(sum):
    if (k>0):
        res.append(res[k-1] + sum[k])
    else:
        res.append(sum[k])
print(sum)
print(res)
# Вывод
[2, 3, 2, 5, 6]
[2, 5, 7, 12, 18]
Ответ написан
Sly_tom_cat
@Sly_tom_cat
.
на уровне логики описанной в задании, и простейшими действиями:
vals = [1,2,3,4,5]   # список со значениями 
acc = 0                  # аккумулятор
for i in range(len(vals)):   # проходим по списку
  acc + = vals[i]                    # увеличиваем аккумулятр на значение текущего элемента
  vals[i] = acc                       # запоминаем в оригинальном массиве накопленную сумму


Если еще проще то можно не мудрить со сканированием оригинального массива.
vals = [1,2,3,4,5]   # список со значениями 
acc = 0                  # аккумулятор
res = []
for v in vals:
  acc + = v
  res.append(acc)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
import itertools
import operator

itertools.accumulate([1,2,3,4,5], operator.add)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы