/ / Y a-t-il un moyen de spécifier l'accumulateur de réduction () en Python? - python, haskell, réduire

Existe-t-il un moyen de spécifier l'accumulateur de réduction () en Python? - python, haskell, réduire

J'ai appris beaucoup de Haskell ces derniers temps etvoulait essayer quelques-unes des astuces nettes qu'il a en Python. D'après ce que je peux comprendre, Python "s réduction définit automatiquement la variable itérative et l'accumulateur de la fonction transmis aux deux premières valeurs de la liste donnée en réduction. En Haskell, lorsque j'utilise son équivalent, fold, je peux spécifier ce que je veux-je que l’accumulateur soit. Y at-il un moyen de le faire avec Python "s réduire?

Réponses:

5 pour la réponse № 1

Citant réduire les docs, une interface est:

reduce(function, iterable[, initializer])

Si le facultatif initialiseur est présent, il est placé avant les éléments duitérable dans le calcul et sert de valeur par défaut lorsque le iterable est vide. Si l’initialiseur n’est pas donné et que iterable contient un seul article, le premier article est retourné.

Ainsi, un exemple (académique) d'utilisation d'initialiseur peut être:

seq = ["s1", "s22", "s333"]
len_sum_count = reduce(lambda accumulator, s: accumulator + len(s), seq, 0)
assert len_sum_count == 9