它会是不错的使用itertools.accumulate
与initial=None
字面意思是它应该开始None
。
例如:
from typing import Optional, Iterable
from itertools import islice, accumulate
def f(a: Optional[A], b: B) -> A:
pass
b_s: Iterable[B] = [...]
_a_s = accumulate(b_s, f, initial=None) # doesn't work!
a_s = list(islice(_a_s, 1, None))
失败是因为initial=None
告诉accumulate
第一个元素用作初始元素,然后从那里去,所以f
最终将被两个B
参数调用。
有谁知道解决这个问题的简单方法?
我目前的计划是使用False
,但是接下来我还有很多要讲的要解释我对MyPy所做的事情。
最好的选择可能是chain
将值添加到可迭代的输入中:
output = accumulate(chain([None], iterable), f)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句