我有一个通过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使用。
很抱歉,如果我的问题充满了愚蠢,但我对发电机和泡菜都不熟悉...... 谢谢,
百里
答案 0 :(得分:7)
您可以将生成器的结果(使用生成器表达式创建)合并到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)