7

listリストを拡張するために必要な時間を最適化するために、大きなスペースで初期化することが知られています(平均して、配列のように新しいリストを作成し続ける必要はありません)。

どうsetですか?

次の構造では、が原因でスペースが無駄になりlistます。tuple不変であるため、より多くのスペースを節約できることを理解しています。同じことを実行できset、それでも変更可能ですか?

set( [ 1, 2, 3] )

4

2 に答える 2

11
>>> from sys import getsizeof as size
>>> s = set(xrange(100))
>>> l = list(xrange(100))
>>> size(s)
8424
>>> size(l)
1016

setsはsよりも多くのメモリを消費しますlist。が提供する機能の中には、setより多くのメモリを必要とするものがあります(たとえば、クイックメンバーシップテスト)。

于 2012-11-25T03:04:05.073 に答える