Trong Python 3.3, itertools.accumulate()
, thường liên tục áp dụng thao tác bổ sung cho vòng lặp được cung cấp, bây giờ có thể lấy đối số hàm làm tham số; điều này có nghĩa là nó trùng lặp với functools.reduce()
. Với một cái nhìn lướt qua, những khác biệt chính giữa hai bây giờ sẽ dường như là:itertools.accumulate() so với functools.reduce()
accumulate()
mặc định là tổng hợp nhưng không cho phép bạn cung cấp một điều kiện ban đầu thêm một cách rõ ràng trong khireduce()
không mặc định bất kỳ phương pháp nhưng không cho phép bạn cung cấp một điều kiện ban đầu để sử dụng với 1/chuỗi 0 phần tử, và 2)accumulate()
lấy iterable đầu tiên trong khireduce()
mất chức năng đầu tiên
có bất kỳ sự khác biệt khác giữa hai? Hay đây chỉ là vấn đề về hành vi của hai chức năng với việc sử dụng riêng biệt ban đầu bắt đầu hội tụ theo thời gian?
tích lũy thực hiện quét https://en.wikipedia.org/wiki/Prefix_sum trong khi giảm hiệu suất gấp https://en.wikipedia.org/wiki/Fold_(higher-order_function) –