2

同様のスキーマの 2 つのテーブルを比較する必要があり、2 つのジェネレーター オブジェクトがあります。これらの 2 つのジェネレーターを Python で行ごとに比較するにはどうすればよいですか。ファイル比較ロジックを実装する必要があります。

If generator-object-1 =  generator-object-1:
        then read-next-row-generator-object-1,read-next-row-generator-object-1
elif generator-object-1 >  generator-object-2:
        then read-next-row-generator-object-2
elif generator-object-1 <  generator-object-2
        then read-next-row-generator-object-1

Pythonで行うより良い方法はありますか?

4

2 に答える 2

0

あまり良い方法はありません...

go1 = next(generator1)
go2 = next(generator2)

try:
    while True
        if go1 == go2:
           go1 = next(generator1)
           go2 = next(generator2)
        elif go1 > go2:
           go2 = next(generator2)
        elif go1 < go2:
           go1 = next(generator1)
except StopIteration
    pass #Done now ...

もちろん、ここで説明しているのは、実際にはマージ ソートのマージ ステージです (または、少なくともそのように見えます)。ただし、1 つのジェネレーターが使い果たされた後、残りのオブジェクトは生成されません。CPython の組み込みソートは非常にマージに似ています (Tim ソートは挿入ソートとマージソートのハイブリッドです)。したがって、この場合、最後にリストを付けても構わない場合は、次のようにするだけです。

import itertools as it
sorted(it.chain(generator1,generator2))

ボブはあなたのおじです。

于 2013-04-02T15:52:35.967 に答える