In Python 3.3, itertools.accumulate()
, che normalmente applica ripetutamente un'operazione di aggiunta all'iterable fornito, ora può assumere un argomento di funzione come parametro; questo significa che ora si sovrappone a functools.reduce()
. Con uno sguardo superficiale, le principali differenze tra i due ora sembrerebbero essere:itertools.accumulate() versus functools.reduce()
accumulate()
default somma, ma non consente di fornire una condizione iniziale in più esplicitamente mentrereduce()
non predefinita a qualsiasi metodo, ma lo fa puoi fornire una condizione iniziale per l'utilizzo di 1/sequenze 0-elemento, e 2)accumulate()
prende il primo iterabile mentrereduce()
calcia la funzione prima
Esistono altre differenze tra i due? O è solo una questione di comportamento di due funzioni con usi inizialmente distinti che iniziano a convergere nel tempo?
accumula esegue una scansione https://en.wikipedia.org/wiki/Prefix_sum mentre riduce esegue una piega https://en.wikipedia.org/wiki/Fold_(higher-order_function) –