簡體   English   中英

使用 None 作為 itertools.accumulate 的初始值

[英]Use None as initial for itertools.accumulate

itertools.accumulateinitial=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM