簡體   English   中英

Python:獲取生成器中的項目數而不存儲項目

[英]Python: get number of items in generator without storing the items

我有一套用於大量物品的發電機。 我想迭代它們一次,將它們輸出到一個文件。 但是,對於我目前擁有的文件格式,我首先必須輸出我擁有的項目數。 我不想在內存中構建項目列表,因為它們太多而且需要花費大量的時間和內存。 有沒有辦法迭代生成器,獲得它的長度,但不知何故能夠再次迭代它,獲得相同的項目?

如果沒有,我可以為這個問題提出什么其他解決方案?

如果你能弄清楚如何根據控制發生器的參數編寫一個公式來計算大小,那就這樣做吧。 否則,我認為你不會節省太多時間。

在這里包括發電機,我們會盡力為您服務!

這是不可能做到的。 一旦發電機耗盡,就需要重建它以便再次使用。 如果__len__()知道項目數,則可以在迭代器對象上定義__len__()方法,然后可以針對迭代器對象調用len()

我認為任何通用迭代器都不可能。 您將需要弄清楚如何最初構建生成器,然后為最終傳遞重新生成它。

或者,您可以在文件中寫出虛擬大小,編寫項目,然后重新打開文件進行修改並更正標題中的大小。

如果您的文件是二進制格式,這可以很好地工作,因為無論實際大小是多少,大小的字節數都是相同的。 如果是文本格式,如果您無法填充虛擬大小以覆蓋所有情況,則可能需要為文件添加一些額外長度。 有關使用Python在文本文件中插入和重寫的討論,請參閱此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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