【发布时间】:2021-02-06 00:20:44
【问题描述】:
itertools.accumulate的用法如下:
itertools.accumulate(iterable[, func, *, initial=None])
例如
list(itertools.accumulate([0, 7, 19, 13],operator.sub))
# [0, -7, -26, -39]
我使用减法运算符作为func 参数。
如何定义我自己的func 参数?
我希望它类似于operator.sub,但不是从第一项中减去第二项,而是从第二项中减去第一项。
输出[0, -7, -26, -39] 产生如下:
[0, (0) - (7), (0 - 7) - (19), ((0 - 7) - (19)) - (13)] == [0, -7, -26, -39]
我想要它:
[0, (7) - (0), (19) - (7 - 0), (13) - ((19) - (7 - 0))] == [0, 7, 12, 1]`
与operator.sub 相同,只是减法中的参数顺序被交换了。或者以其他方式说 - 如果 operator.sub 正在执行 x1-x2 我希望它在每个迭代步骤中执行 x2-x1。
【问题讨论】:
标签: python function iteration itertools