2017-11-09 10 views
3

私は、Pythonリストが本質的にC配列であり、シーケンシャルメモリの特定のブロックを割り当てることを理解しています。しかし、これらのメモリは実際にはリストにあるデータを格納するのか、実際のデータが格納されているメモリ内の別の場所を指すだけですか?Pythonリストメモリの記憶

おそらく、リストに格納されているオブジェクトのサイズに依存しますか?あなたはintのリストを順番に簡単に保存することができますが、自己定義されたオブジェクトを含むさまざまなオブジェクトを動的に格納することは難しくなります。

+0

チェックこのマニュアルを参照して、主に参照することにより、https://docs.python.org/2/faq/design.html#how-are-lists-implemented – gout

+1

いいえ。Py_Objectポインタのc-arrayです。 –

+1

かなり良い説明[ここ](https://www.laurentluce.com/posts/python-list-implementation/) –

答えて

0

いいえ、オブジェクト

Performance Notes#にPythonのリストストア参照( "ポインタ")

リストオブジェクトは、2つの内部の部分から構成され、 1つのオブジェクトヘッダー、および別個に割り当てられた1つのオブジェクト参照配列を含む。後者は、必要に応じて を再割り当てします。

+0

を確認してください。それは私が何らかの書類を見ていないと仮定したものです – 0TTT0

1

Pythonで空のリストは72のバイトを要するので、この検討:

ls = [] takes 72 bytes 

x = '1234567' takes 44 bytes 

は今、この:

[x]リストは、文字列xが124バイト(72 + 8 + 44)かかり含ま。

しかし、あなたの質問:×5回の文字列が含まれてい

[x, x, x, x, x]リストは、156バイト(72 + 5 * 8 + 44)かかります。

は非常にいいが、ここで説明:

https://code.tutsplus.com/tutorials/understand-how-much-memory-your-python-objects-use--cms-25609