[英]Use None as initial for itertools.accumulate
將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
使用第一個元素作為初始元素和 go 從那里開始,所以f
最終會被兩個B
arguments 調用。
有誰知道解決這個問題的簡單方法?
我目前的計划是使用False
,但是我有更多的障礙可以解釋我對 MyPy 所做的事情。
您最好的選擇可能是將值chain
到輸入迭代:
output = accumulate(chain([None], iterable), f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.