Показать сообщение отдельно
Старый 20.04.2024, 21:34   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

На 3ем питоне можно было бы лаконично:
Код:
from itertools import accumulate, zip_longest

a = (2, 4, 6, 2, 10)
print(*accumulate(map(sum, zip_longest(*[iter(a)] * 2, fillvalue = 0))))
А на 2ом придется чуть больше написать:
Код:
def my_accum(iterable):
    it = iter(iterable)
    s = 0
    while True:
        try:
            a = next(it)
        except StopIteration:
            return
        try:
            b = next(it)
        except StopIteration:
            yield s + a
            return
        s += a + b
        yield s

a = (2, 4, 6, 2, 10)
print(list(my_accum(a)))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием