ここに一見単純な問題があります: 整数のシーケンスを昇順で生成するイテレータのリストが与えられた場合、すべてのシーケンスに現れる整数のみを生成する簡潔なジェネレータを記述します。
昨夜いくつかの論文を読んだ後、私は Python で完全に最小限のフルテキスト インデクサーをハックすることにしました(このバージョンは今ではかなり古いですが)。
私の問題は、search()各投稿リストを反復処理し、すべてのリストに表示されるドキュメント ID のみを生成する必要がある関数にあります。上記のリンクからわかるように、現在の非再帰的な「作業」の試みはひどいものです。
例:
postings = [[1, 100, 142, 322, 12312],
[2, 100, 101, 322, 1221],
[100, 142, 322, 956, 1222]]
生成する必要があります:
[100, 322]
これに対する洗練された再帰関数の解決策が少なくとも 1 つありますが、可能であればそれは避けたいと思います。itertoolsただし、ネストされたジェネレータ式、乱用、またはその他の種類のコード ゴルフを含むソリューションは大歓迎です。:-)
整数のセット全体をメモリに吸い込まずに、最小のリストにあるアイテムと同じ数のステップのみを関数が必要とするように調整できるはずです。将来、これらのリストはディスクから読み取られ、使用可能な RAM よりも大きくなる可能性があります。
この 30 分間、私は舌先でアイデアを思いつきましたが、それをコードにすることはできませんでした。覚えておいてください、これはただの楽しみです!