2012-04-19 26 views
0

私はPythonでメモリエラーが発生していますが、これは驚くべきことではありませんが、代わりが必要です。だから私は私の知識に値をメモリに保存するためにいくつかのサテライトを使用しています。 for文を切り替えると、メモリに保存されないものに保存されるようになります。それをテキストファイルに保存する方が良いでしょうか?このコードは私が何をすべきかを答えるのを助けるためのものです。私はあなたのアイデアの例を挙げたいと思います。メモリの問題を引き起こす多くのForステートメントに

def product(*args, **kwds): 
    pools = map(tuple, args) * kwds.get('repeat', 1) 
    result = [[]] 
    for pool in pools: 
     result = [x+[y] for x in result for y in pool] 
    for prod in result: 
     yield tuple(prod) 

def start(): 
    for chars in product("a[email protected]#$%^&*?,()-=+[]/;", repeat = 4): 
     print chars 
+1

私たちは最後の質問で 'itertools.product'を使用するようあなたに言っただけです。これはドキュメントのコードですが、本当の 'itertools.product'はありません。私はドキュメントによってかなり明確になったと思います。 – agf

答えて

2

使用itertools.product:ドキュメントから

from itertools import product 

def start(): 
    for chars in product("a[email protected]#$%^&*?,()-=+[]/;", repeat = 4): 
     print chars 

この関数は、実際の実装は、メモリ内の中間結果を構築していないことを除いて、以下のコードと同等です

+0

これは、C側に実装されているという利点があり、非常に効率的で、作業が少なくて済みます。 –

+0

それはとても変わったです、私はそうだと思いました。ありがとう! –

+0

これは本当に問題の一部ではありませんが、各結果を印刷すると計算が遅くなりますか? –

関連する問題