2009-03-05 11 views
4

Python 2.5.2用deepcopyの反復バージョンの実装はありますか?コピー・モジュールから使用可能なdeepcopyメソッドは再帰的であり、大きなツリーでは失敗します。私は実行時にスタック制限を安全に増やすことができる立場にはありません。Pythonのdeepcopyの反復バージョン

EDIT

私はこれを追跡しました:

http://code.activestate.com/recipes/302535/

私はそれをテストしていませんが、それは可能性を秘めているように見えます。

+0

でのような動作します - あなたはどのように大きな木を話していますか? – Dana

+0

数十万のヒント。私は内部ノードの総数を思い出さない。 – daniel

+0

最長の枝の深さとは何ですか? – fulmicoton

答えて

1

これは意味をなさないでしょうか。 deepcopyの全体の点は、各オブジェクトが子どもたちに自分自身をコピーするように頼むのではないでしょうか?

あなたはコピーしているオブジェクトの種類とその子どもの外観を正確に知っていると思われるので、私があなただったら自分のコピー機能を作成します。あまりにも厳しくはありません。

+2

いいえ、難しくありません。しかし、再帰制限は頻繁に発生しました。私は、任意のオブジェクトを扱うことができるよく酷使され、堅牢な先の実装を好むだろう。 – daniel

+0

を頻繁に使用すると、再帰に依存しているコードは、結局中断する傾向があります。再帰的なコードを私たちのソフトウェアパッケージにコミットすることに関する非公式のブロックを設けました。 – daniel

+1

To Ben>ダニエルは、現在のものと同じことをしているdeepcopyのバージョンを望んでいると思うが、深すぎるツリーでは失敗しない。 論理的に再帰的なアルゴリズムを反復的に書くプロセスは、逆再帰的なものと呼ばれます。 – fulmicoton

0

多分それはすごいStackless Python

+0

は、さまざまなアーキテクチャにわたってPython/NumPy/matplotlib/C/pyrexの50,000行以上の既存ソフトウェアプラットフォームで問題なく機能する必要があります。私は移行が見えない場合は自分自身をたわごとだ。しかし、私はスタックレスに利点があることに同意します。 – daniel