簡體   English   中英

組合發電機

[英]Combining generators

我有一個函數,通過yield返回一個列表。 我使用此功能如下:

myList = []
for i in range(10):
    myList = myList + list(myListGenerator(i))

pickleFile = open("mystuff.dat", "wb")
pickle.dump(myList, pickleFile)
pickleFile.close() 

我只是想知道這是否是對數據進行腌制的最有效方法,或者是否可以將生成器(myListGenerator(0),myListGenerator(1)等)組合到一個可以由pickle使用的生成器中。

抱歉,我的問題太愚蠢了,但是我既是發電機又是醬菜的新手...謝謝,

巴里

您可以使用itertools.chain.from_iterable將生成器的結果(使用生成器表達式創建)合並到一個列表中:

pickle.dump(list(itertools.chain.from_iterable(
              myListGenerator(i) for i in range(10))), pickleFile)

或重寫生成器以在內部包含range調用,然后執行

pickle.dump(list(myListGenerator(10)), pickleFile)

暫無
暫無

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

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