現在、特定の桁数の数字のリストを生成しようとしています。現在のコードは次のとおりです。
| | Python 2.7 |
import itertools
inp = raw_input('Number of digits to write?:')
inp = int(inp)
inp2 = raw_input('File name?:')
inp2 = inp2 + '.txt'
variants = ["".join(item) for item in itertools.product("0123456789", repeat=inp)]
variant = open(inp2, 'w')
for number in variants:
variant.write("%s\n" % number)
ご覧のとおり、新しい番号ごとに行ごとに出力が配置された複数の異なるファイルを作成しようとしています。
リスト内のすべての可能な数値をメモリに格納しているため、リストが問題になる可能性があることはわかっています。私の質問は次のとおりです。数字が7を超えると、メモリの問題があります.必要なメモリを減らすか、複数のファイルをまとめて同じタイプのデータでリストを生成するにはどうすればよいですか.
for ループは、この特定の itertools 実装を使用せずに、本質的に 2 つのリストを一緒に「追加」します (たとえば、4 桁のファイルと 5 桁のファイルで本質的に 9 桁のファイルを作成します)。
おそらくある種の再帰?(再帰関数などの書き方がまだわかりません。プログラミング全般に関しては初心者です)