我看到了this,和this问题,我希望有同样的效果,只有用^{
来自itertool.izip
的文档:
Like zip() except that it returns an iterator instead of a list
我需要一个迭代器,因为我不能将所有的值都放入内存中,所以我使用了一个生成器并对这些值进行迭代。在
更具体地说,我有一个生成三值元组的生成器,我不想迭代它,而是将三个值列表提供给三个函数,每个列表表示元组中的一个位置。在
在这三个元组值中,只有一个is包含大项目(内存消耗方面的)(我们称之为data
),而另外两个只包含只需要少量内存来保存的值,所以首先迭代data
值的“值列表”应该对我有效,方法是逐个使用data
值,并缓存小的。在
我想不出一次生成一个“值列表”的聪明方法,因为我可能决定偶尔删除三值元组的实例,这取决于元组的大值。在
使用广泛建议的zip
溶液,类似于:
>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
结果是“解包参数列表”部分(*[…]),以触发整个迭代器的完整迭代,并(我假设)将所有结果缓存到内存中,这是我所说的,对我来说是个问题。在
我可以建立一个掩码列表(保留小值的True/False),但我正在寻找一种更干净、更具python风格的方法。如果其他一切都失败了,我就这么做。在
传统的循环有什么问题?在
相关问题 更多 >
编程相关推荐