【问题标题】:Combining generators组合生成器
【发布时间】:2011-10-01 21:22:15
【问题描述】:

我有一个通过 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 使用。

对不起,如果我的问题听起来很愚蠢,但我对发电机和泡菜都是新手...... 谢谢,

巴里

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 2018-12-16
      • 2010-10-20
      • 1970-01-01
      • 2018-07-07
      相关资源
      最近更新 更多