簡単な答え:現代のpythonでは、すべてのデータ型がクラスであるため、正式に提案した2つのソリューションに違いはありません。(新しいスタイルのクラスを使用することを忘れないでください:古典的なクラスは廃止されました!http://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classesを参照してください)
質問は次のとおりです:pythonで効率的なデータ構造をどのように整理するのですか?配列として細胞を組織の非常にアイデアことは間違いありませんclass Cell
インスタンスがあるあまりにも非効率的で。複雑なリンクリストのように整理されたポインタと不連続なデータが大量にあります。もちろん、リストに新しいセルを簡単に挿入できますが、この機能が必要ですか?それどころか、連続していないデータストレージがあり、異なるレベルのインダイレクションによってすべてのセルにアクセスする必要があります。
numpy.ndarray
データをメモリとして連続的に整理すると、データはメモリに連続し、異なるセルへのアクセスはメモリブロックを簡単にたどります:スペース効率(ポインタにメモリが無駄になりません)と高速。
Ethanが指摘したように、OOの概念を使用する必要がありますが、高レベルでは、通常はを通じて、効率的な低レベルのデータ構造が実装されnumpy.ndarray
ます。
オブジェクト指向プログラミングとは、データをより高い抽象化レベルで動作するメソッドにデータをバインドすることです。(例:スパーススーパーノードコレスキー分解のメソッドを使用して、剛性マトリックスがクラスとして定義されたFEMコードを実装しました。最初の実装はインコアでした。アウトオブコア実装が必要な場合、これは継承および下線データストレージへの最小限の調整によって取得されました。スーパーノードコレスキーコードのほぼ100%が再利用されました。)
最後のコメントですが、重要:効率的な数値手順は、アルゴリズムとデータ構造をターゲットコンピューティングアーキテクチャにスマートにマッピングした結果です。間違ったデータ構造から始めると、完全に書き直さなければ効率を回復する方法はありません。