ジェネレーターのシーケンスがあります:(gen_0、gen_1、... gen_n)
これらのジェネレーターは、値を遅延して作成しますが、有限であり、長さが異なる可能性があります。
使い果たされたジェネレーターからの値をスキップして、各ジェネレーターの最初の要素を順番に生成し、次に2番目の要素を生成する別のジェネレーターを構築できる必要があります。
この問題はタプルを取るのと似ていると思います
((1, 4, 7, 10, 13, 16), (2, 5, 8, 11, 14), (3, 6, 9, 12, 15, 17, 18))
そしてそれをトラバースして、1から18までの数字を順番に生成します。
私は(genA、genB、genC)を使用してこの単純な例を解決することに取り組んでいます。genAは(1、4、7、10、13、16)からの値を生成し、genBは(2、5、8、11、14)を生成しますgenCの収量(3、6、9、12、15、17、18)。
タプルのタプルに関するより単純な問題を解決するには、タプルの要素が同じ長さである場合、答えはかなり簡単です。変数「a」がタプルを参照している場合は、次を使用できます。
[i for t in zip(*a) for i in t]
残念ながら、アイテムは必ずしも同じ長さではなく、zipトリックはジェネレーターでは機能しないようです。
これまでのところ、私のコードはひどく醜く、クリーンなソリューションに近づいているものを見つけることができていません。ヘルプ?