0

私はPython 2.6を使用しており、関数を見つけました

[in] a=[[1,2,3],[1,2,3]]
[in] b=list(itertools.product(*a))

ここで、a はリストのリストであり、結果は a のすべてのリストから 1 つの値を取得する可能な組み合わせごとのタプルを含むリストです。いえ

[out]  [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

問題は、20 個のリストのリストで作業を開始したときに発生します (結果は 3**20 個の異なるタプルになり、メモリがオーバーフローします)。これらを回避するために、生成前または生成中にすべてのタプルを作成した後に、適用している制約を適用したいと考えています。この制約は、たとえば次のとおりです。

  • 常に 2 が 2 つ連続
  • 1 の 40%
  • 1 の後の 3 や 3 の後の 1 ではありません ...

誰かがこの種のことを行うことができる高度な機能で私を助けることができますか?

4

1 に答える 1