的反函数是什么itertools.izip文件在python中?

2024-09-28 18:54:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到了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风格的方法。如果其他一切都失败了,我就这么做。在


Tags: 方法内存文档列表datathatzipthis
1条回答
网友
1楼 · 发布于 2024-09-28 18:54:18

传统的循环有什么问题?在

>>> def gen():
...     yield 'first', 0, 1
...     yield 'second', 2, 3
...     yield 'third', 4, 5
...
>>> numbers = []
>>> for data, num1, num2 in gen():
...     print data
...     numbers.append((num1, num2))
...
first
second
third
>>> numbers
[(0, 1), (2, 3), (4, 5)]

相关问题 更多 >