雖然試圖解決一個特定的問題,我遇到了一個特定的情況,我很難理解的行爲。意想不到的行爲壓縮迭代器的序列
該場景是,zip
帶有序列的迭代器,並且在轉置操作之後,迭代器是預期元素之後的迭代器。
>>> l = range(10)
>>> it = iter(l)
>>> zip(it, range(5))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> next(it) #expecting 5 here
6
我是否缺少明顯的東西?
注意請的答案可能不是很明顯
'我懷疑,當郵編嘗試訪問下一步時會消耗5個郵件,但爲什麼會這樣。這顯然是明顯的,但我需要知道爲什麼? – Abhijit 2014-08-29 15:15:50
在第六次迭代中,'zip'首先要做的就是調用你的迭代器。然後它會進入'範圍',這將失敗,並且壓縮停止。但是你不能不重複這個項目並重新獲得'5'。你不得不前進,所以'5'永遠失去了時間。 – TheSoundDefense 2014-08-29 15:16:20
@Ahhijit當其一個參數「空」時,Zip停止。但爲了知道它是否爲空,它必須在其上執行'.next()'。 – fredtantini 2014-08-29 15:18:52