我想先从第一个生成器取第 1 个值,从第二个生成器取第 1 个值,从第三个生成器取第 1 个值
接下来从第一个生成器取第 2 个值,从第二个生成器取第 2 个值,从第三个生成器取第 2 个值
以此类推,
最后从第一个生成器取第 5 个值,从第二个生成器取第 5 个值,从第三个生成器取第 5 个值
a = (x for x in range(1, 6))
b = (x for x in range(6, 11))
c = (x for x in range(11, 16))
d = (x for x in [a, b, c])
def y():
for m in d:
yield next(m)
for i in y():
print(i)
我想实现的输出为:
1
6
11
2
7
12
3
8
13
4
9
14
5
10
15
但是,上面的代码由于生成器只能被完整迭代一次所以在 for m in d:这个位置就会出问题。最后只能得到 1, 6, 11
请问有什么比较好的办法解决实现这个需求吗?
这个问题,是为了实现逐行对比超大 Log。我想一行一行对比 Log,但是由于三个 Log 各自都超过了 40G,因此想通过生成器的这种方式来实现。