2010-08-28 1 views
9

Почему размер наборов в Python заметно больше, чем у списков с одинаковыми элементами?Почему на python больше наборов?

a = set(range(10000)) 
b = list(range(10000)) 
print('set size = ', a.__sizeof__()) 
print('list size = ', b.__sizeof__()) 

выход:

set size = 524488 
list size = 90088 
+2

Почему '9999 в'' работает намного быстрее, чем' 9999 в b'? –

+0

Список python реализован как динамический массив, честно говоря, большинство структур данных (кроме кортежей) будут потреблять больше памяти. –

ответ

15

set использует больше памяти, чем list, как он хранит таблицу хешей всех элементов таким образом, он может быстро обнаружить повторяющиеся записи и так далее. Вот почему каждый элемент набора должен be hashable.