2010-08-28 7 views
9

Dlaczego rozmiar zestawów w Pythonie jest znacznie większy niż list z tymi samymi elementami?Dlaczego zestawy są większe niż listy w pythonie?

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

wyjściowa:

set size = 524488 
list size = 90088 
+2

Dlaczego '9999 w a' działa znacznie szybciej niż' 9999 in b'? –

+0

Lista pythonów jest zaimplementowana jak tablica dynamiczna, szczerze mówiąc większość struktur danych (z wyjątkiem krotek) będzie zajmować więcej pamięci. –

Odpowiedz

15

set zużywa więcej pamięci niż list gdyż przechowuje tabelę skrótów wszystkich elementów, dzięki czemu można szybko wykryć zduplikowane wpisy i tak dalej. Dlatego każdy zestaw musi mieć be hashable.