Chức năng reduce()
luôn có thể được tái tạo bởi vòng lặp for
. Dưới đây là một việc thực hiện Python của reduce()
:
def reduce(function, iterable, start=None):
iterator = iter(iterable)
if start is None:
start = next(iterator)
for x in iterator:
start = function(start, x)
return start
(. Ngược lại với phiên bản tích hợp trong Python của reduce()
, phiên bản này không cho phép để vượt qua trong None
như start
tham số)
chuyên vỏ mã này với các thông số bạn truyền cho reduce()
cho
def subsets(my_set):
result = [[]]
for x in my_set:
result = result + [y + [x] for y in result]
return result
Nguồn
2012-02-25 23:25:10
'reduce()' vẫn ở đó - nó đã được chuyển sang 'functools'. –
@SvenMarnach: Ah, cảm ơn. Có một phiên bản không phải là 'reduce() '? – Randomblue
Không hoàn toàn là một lớp lót, nhưng [tài liệu itertools] (http://docs.python.org/py3k/library/itertools.html) có triển khai thực hiện quyền hạn. – AdamKG