2

一連の数値からすべての組み合わせを生成してから、それらの組み合わせの組み合わせを生成したいと考えています。膨大な数の組み合わせが可能なため、メモリエラーが発生し続けます。次の質問を見てきましたが、実際に問題を解決したものはありません:
セットのすべての組み合わせを作成し、メモリを
使い果たす Python itertools.combinations() メモリの問題
Python リスト メモリ エラー

次の方法を使用してリストを生成しています。

#generate all combinations of 1 and 0 of size 30
set_1 = itertools.product([0,1], repeat = 30)
#generate all combinations of set 1, of size 5
set_2 = [tuple(c) for c in pulp.allcombinations(set_1, 5)]
for sets in set_2:
    print(sets)

set_2 の生成中にメモリ エラーが発生します。後でセットにアクセスする必要があるため、 set_2 を反復処理できるようにしたいと考えています。セットをtxtファイルに書き込むことを検討しましたが、最後の手段として保存したいと思います.

4

1 に答える 1

1

メモリ内にリストを作成するリスト内包表記を使用する代わりに、ジェネレータ式を使用してメモリをset2保存および保存できます。

set_2 = (tuple(c) for c in pulp.allcombinations(set_1, 5))

ジェネレーターは、値をメモリに保存せず、オンデマンドで値を生成することを除いて、リスト内包表記に似ています。

于 2015-07-15T14:09:02.330 に答える