1
看起來PEP 479(更改發生器中的StopIteration處理)帶來了許多不便。拉鍊等效的實施例的代碼(從python的2.7文檔,由我自己稍微改變):PEP 479,map()和StopIteration
def izip(*iterables):
# izip('ABCD', 'xy') --> Ax By
iterators = list(map(iter, iterables))
while True:
yield tuple(map(next,iterators))
拉鍊= izip([1,2],[3,4])
下(拉鍊)
(1,3)
下(拉鍊)
(2,4)
下(拉鍊)
()
下(拉鍊)
()
地圖()內置發生器飛燕由下凸起StopIteration異常(),因此拉鍊發生器從未結束。我甚至無法捕捉izip中的異常,因爲問題駐留在map()本身內部。有沒有什麼pythonic的方式來解決這個問題,而不寫一個自定義地圖()?