言語は、各要素に確保するスペースをどのように知るのでしょうか? それとも、データ型に必要な最大スペースを確保していますか? (大きな浮動小数点数について話してください)。その場合、少し効率が悪いのではないですか?
4 に答える
Pythonは、さまざまなオブジェクトへの参照のためにリスト内に十分なスペースのみを予約します。オブジェクトがインスタンス化されるときに十分なスペースを予約するのは、オブジェクトのアロケータ次第です。
Python の配列は、array
モジュールを介して行われます。それらは異なるデータ型を格納するのではなく、特定の数値の配列を格納します。
list
タイプのことだと思います。値は含まれていません。オブジェクトへの参照が含まれているだけで、どのタイプのオブジェクトでもかまいません。
これらのいずれも、要素用のスペースをまったく予約していません (まあ、そうですが、それは内部実装の詳細です)。要素がリスト/配列に追加されるときに必要な要素のためのスペースを追加します。
リスト型は確かに配列型よりも効率が悪いため、配列型が存在します。
これは参照の配列であり、要素オブジェクトへの参照を格納するだけです。したがって、各ブロックのサイズは特定です。
http://docs.python.org/2/faq/design.html#how-are-lists-implemented
C 言語の用語では、Python のリストは に似ていますがPyObject *mylist[100]
、動的に割り当てられる点が異なります。これは、Python オブジェクトへの参照を格納するメモリの連続したチャンクです。