私はこれまでのところ、私はこれ持って、範囲のリストからitertoolsでリストを作成しています:今itertools.productでリストを作成するPython?
start_list = [xrange(0,201,1),xrange(0,201,2),xrange(0,201,5),xrange(0,201,10),xrange(0,201,20),xrange(0,201,50),xrange(0,201,100),xrange(0,201,200)]
を、私はこの次の行を実行しようとした場合、それは私のPythonインタプリタを殺すことを知っています:私は思ったんだけど何
next_list = list(itertools.product(*start_list))
は一定量に等しい場合のみ、そのアイテムとの合計がnext_listでそれらを置くために、各タプルをチェックし、引数に配置することが可能になるのですか?たぶん
のようなもの:
next_list = list(itertools.product(*start_list,sum(tuples)=200))
私は、これは権利ではありません知っていると私は、私はこのことについてつもり再考え方に起動する必要があります。ジェネレータ内のstart_listの範囲が多すぎて、別のリストを作成することはできませんか?
整数200を異なる集合から8つの項に分割する方法を理解しようとするなら、next_listを計算する簡単な方法があります。私が正しいと考えるならば、あなたのデカルト製品には、5768123130個の異なるアイテムが繰り返し処理されますが、これにはかなりの時間がかかります。 – DSM
こんにちはDSM、お返事ありがとうございます。私はより効率的な方法を作ることに目を向けるでしょう。 – tijko
関連:http://stackoverflow.com/questions/1106929/find-all-combinations-of-coins-when-given-some-dollar-value – jfs