W języku Python 3.3, itertools.accumulate()
, który zwykle wielokrotnie dodaje operację dodawania do podanej iteracji, może teraz przyjmować argument funkcji jako parametr; oznacza to, że teraz pokrywa się z functools.reduce()
. Z pobieżnym spojrzeniem, główne różnice między tymi dwoma teraz wydaje się być:itertools.accumulate() versus functools.reduce()
accumulate()
domyślne do zsumowanie ale nie pozwalają dostarczyć dodatkowy warunek wstępny wyraźnie podczasreduce()
nie zalega z dowolnym sposobem, ale nie pozwalają dostarczyć wstępny warunek do zastosowania z sekwencjami 0 1/pierwiastków, oraz 2)accumulate()
bierze iterable pierwszy podczasreduce()
zajmuje pierwsze funkcję
Czy są jakieś inne różnice między nimi? Czy jest to tylko kwestia zachowania dwóch funkcji z początkowo odrębnymi zastosowaniami, które zaczynają zbiegać się w czasie?
akumuluje wykonuje skan https://en.wikipedia.org/wiki/Prefix_sum podczas gdy redukuje wykonuje fałdę https://en.wikipedia.org/wiki/Fold_(higher-order_function) –