在Python 3.3中,^{}通常重复对提供的iterable应用加法操作,现在可以将函数参数作为参数;这意味着它现在与^{}重叠。粗略地看一下,两者现在的主要区别似乎是:
accumulate()
默认为求和,但不允许显式地提供额外的初始条件,而reduce()
不默认为任何方法,但允许您提供用于1/0元素序列的初始条件,以及accumulate()
先取iterable,而reduce()
先取函数。
这两者还有什么区别吗?或者这仅仅是两个函数的行为问题,它们最初的不同用途随着时间的推移开始收敛?
Tags:
您可以在文档中看到不同之处。
reduce
返回序列的一个单结果、和、积等。accumulate
返回中间结果上的迭代器。基本上,accumulate
返回对reduce
操作的每个步骤的结果的迭代器。似乎
accumulate
保留了先前的结果,而reduce
(在其他语言中称为fold)不一定。例如,
list(accumulate([1,2,3], operator.add))
将返回[1,3,6]
,而普通褶皱将返回6
另外(只是为了好玩,不要这样做)您可以用
reduce
定义accumulate
itertools.accumulate
类似于reduce
,但返回生成器*而不是值。这个生成器可以提供所有中间阶跃值。所以基本上,reduce给了你最后一个元素,就是积累会给你的东西。*生成器类似于迭代器,但只能重复一次。
相关问题 更多 >
编程相关推荐