Как использовать начальный аргумент внутри itertools.accumulate?

#python #itertools #accumulate

#python #python-itertools #накапливать

Вопрос:

В этой ссылке на документацию мы можем прочитать это:

 itertools.accumulate(iterable[, func, *, initial=None])
  

Обычно количество выходных элементов совпадает с количеством входных итераций.
Однако, если указан аргумент ключевого слова initial , накопление
завершается начальным значением, так что на выходе на один
элемент больше, чем на входе, который можно повторить.

Однако я не могу понять, как использовать initial аргумент.

Если я использую его так:

 accumulate([0, 7, 19, 13], operator.add,1)
  

Я получаю сообщение об ошибке «TypeError: accumulate() принимает не более 2 аргументов (задано 3)».

Я использую Python 3.4.

Ответ №1:

Если вы посмотрите на сигнатуру функции, вы заметите «*». Это означает, что все, что после этого, должно быть предоставлено в качестве аргументов ключевого слова. Итак, ваш вызов должен быть:

 accumulate([0,7,19,13], operator.add, initial=1)
  

но вы сказали, что используете Python 3.4, тогда у вас не будет initial аргумента, поскольку он предоставляется только в Python 3.8, согласно документации.