2

SAT ソルバーの結果として、論理式のモデルの入れ子になった大きな int リストがあります。リストには、約 30 の長さの 100 万個のサブリストがあります。

サンプルデータ:

[[-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, -34, 35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, -34, 35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, 35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, 35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, -35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, -35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, 31, 32, 33, 34, -35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, 31, 32, 33, 34, -35, 36, 37]]

[4,5,6] などのリストが、ネスト リストの 1 つの一部である要素で構成されているかどうかを確認する必要があります。

私のリストは次のとおりです。

[ [5,12,46,4,99,6],[23,66,99,32,77] ]

プログラムを実行すると

[4,5,6]

返すべきtrue

さまざまなリストでテストを 500 回実行する必要があるため、問題はパフォーマンス クリティカルだと思います。

これが私の計画です:

  • チェックするリストを並べ替える
  • 大きなネストされたリストをソートする
  • 常に最初に 2 つの最小の数値を比較します (たとえば、2 を検索し、サブリストが 3 で始まる場合、次のサブリストに進むことができます)

または、dict を使用するなど、より良いアプローチがありますか?

(PS: 私は正の数だけを探しているので、負の数をすべて取り除くために前にこの質問をしました。)

4

2 に答える 2