Python 使用None作为itertools.accumulate的首字母
最好使用Python 使用None作为itertools.accumulate的首字母,python,python-3.x,functional-programming,itertools,Python,Python 3.x,Functional Programming,Itertools,最好使用itertools.acculate和initial=None来字面意思是它应该以None开始 例如: 从输入导入可选,可编辑 从itertools导入islice,累积 def f(a:可选[a],b:b)->a: 通过 b_s:Iterable[b]=[…] _a_s=累计(b_s,f,initial=无)#不起作用! a_s=列表(islice(_a_s,1,无)) 这会失败,因为initial=None告诉accumulate使用第一个元素作为首字母并从那里开始,因此f最终将使
itertools.acculate
和initial=None
来字面意思是它应该以None
开始
例如:
从输入导入可选,可编辑
从itertools导入islice,累积
def f(a:可选[a],b:b)->a:
通过
b_s:Iterable[b]=[…]
_a_s=累计(b_s,f,initial=无)#不起作用!
a_s=列表(islice(_a_s,1,无))
这会失败,因为initial=None
告诉accumulate
使用第一个元素作为首字母并从那里开始,因此f
最终将使用两个B
参数调用
有人知道解决这个问题的简单方法吗?我目前的计划是使用
False
,但接下来我还要解释我对MyPy所做的事情。您最好的选择可能是将值链接到输入表上:
output = accumulate(chain([None], iterable), f)