2010-08-28 11 views
9

Warum ist die Größe von Sätzen in Python merklich größer als die von Listen mit gleichen Elementen?Warum sind Sets größer als Listen in Python?

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

Ausgang:

set size = 524488 
list size = 90088 
+2

Warum läuft '9999 in a' viel schneller als' 9999 in b'? –

+0

Die Python-Liste ist wie ein dynamisches Array implementiert, offen gesagt würden die meisten Datenstrukturen (außer Tupeln) mehr Speicher verbrauchen. –

Antwort

15

Die set verwendet mehr Speicher als die list, da es eine Tabelle von Hashes aller Elemente speichert, so dass es schnell doppelte Einträge und so erkennen kann. Deshalb muss jedes Set-Mitglied be hashable sein.

Verwandte Themen