我将如何转换成对的生成器(元组):

tuple_gen = (i for i in [(1, "a"), (2, "b"), (3, "c")])

分成两个生成[1, 2, 3]["a", "b", "c"]的生成器?

我需要分别处理元组的第一和第二个元素,并且处理函数期望可迭代。

生成器非常大(数百万个项目),因此除非没有其他解决方案,否则我想避免将所有项目同时存储在内存中。

最佳答案

您可以使用itertools包中的tee函数创建n不同的迭代器。然后,您将分别遍历它们:

from itertools impor tee

i1, i2 = tee(tuple_gen, n=2)
firsts = (x[0] for x in i1)
seconds = (x[1] for x in i2)

关于python - 将一对发电机变成一对发电机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47146905/

10-12 22:00