2016-02-16 38 views
-3

我有這個生成器返回一個數字列表。
如何找到生成器中列表的長度。 (Python)

li=tile_generator(im) 

我需要找到列表中的「禮」的長度,我需要檢查的閾值。
我用length = sum(1 for i in li)。它返回列表的長度,但生成器中的元素已耗盡,因爲它是一個生成器。
我需要返回長度而不耗盡生成器中的元素。

+2

這已經非常仔細地回答了在此網站上幾聲:http://stackoverflow.com/questions/7460836/how-to-lengenerator, http://stackoverflow.com/questions/393053/length-of-generator-output – AllTheTime

回答

0

你不能那樣做。你可以,但是,把它變成一個列表第一:

li = list(tile_generator(im)) 
length = len(li) 
+0

是的,但我的關注是使用生成器,因爲我想在閱讀時釋放元素。如果我將其更改爲列表,那麼我將有不必要的內存負載。 –

+0

我的觀點是,如果不耗盡發電機的長度,就無法找到它的長度。但是,我可以建議,也許你正在尋找'enumerate()'。例如,你可以說,對於我來說,枚舉項(tile_generator(im)):'並且把你想要的任何代碼放在那裏。一旦你在'for'循環完成後,'i'將與發生器的長度相同。如果您在使用發生器之前需要長度*,我的答案是唯一的方法。 – zondo

相關問題