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

После каждого 5-го элемента вставить элемент, который равен сумме этих 5-ти элементов?

a = [1,2,23,4,5,6,7,40,9,10,100,12,13,14,15,700,17,18,19,20]

for i in range(0, len(a), 5):
    print(sum(a[i:i+5]))



a = [1,2,23,4,5,6,7,40,9,10,100,12,13,14,15,700,17,18,19,20]
i = 5
while i < len(a):
    a.insert(i, 33333335)
    i += 6
print (a)


Я нашла сумму и поняла как вставлять, но сумма же после каждых 5-ти будет разная(не везде 35..), каким образом это можно сделать? Чтоб после каждых 5-ти выводило их сумму.
  • Вопрос задан
  • 196 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 4
adugin
@adugin Куратор тега Python
def generate(sequence, group_by=5, func=sum):
    for group in zip(*[iter(sequence)]*group_by):
        yield from group
        yield func(group)
        
print(*generate(a))
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
from itertools import chain

a = [1,2,23,4,5,6,7,40,9,10,100,12,13,14,15,700,17,18,19,20]
b = list(chain(*[a[x*5:x*5+5] + [sum(a[x*5:x*5+5])] for x in range(len(a)//5)]))
print(b)

# [1, 2, 23, 4, 5, 35, 6, 7, 40, 9, 10, 72, 100, 12, 13, 14, 15, 154, 700, 17, 18, 19, 20, 774]
Ответ написан
Комментировать
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
a = [1, 2, 23, 4, 5, 6, 7, 40, 9, 10, 100, 12, 13, 14, 15, 700, 17, 18, 19, 20]

for index, group in reversed(list([(i, a[i:i+5]) for i in range(0, len(a), 5)])):
    s = sum(group)
    a.insert(index + 5, s)
    print(f'{index} {group} => {s}')

# 15 [700, 17, 18, 19, 20] => 774
# 10 [100, 12, 13, 14, 15] => 154
# 5 [6, 7, 40, 9, 10] => 72
# 0 [1, 2, 23, 4, 5] => 35

# a
# [1, 2, 23, 4, 5, 35, 6, 7, 40, 9, 10, 72, 100, 12, 13, 14, 15, 154, 700, 17, 18, 19, 20, 774]
Ответ написан
Комментировать
@Drill
def sumelem(seq, step):
    for i, elem in enumerate(seq,1):
        if i%step:
            yield elem
        else:
            yield elem
            yield sum(seq[i-step:i])

print(*sumelem(a, 5))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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