2010-08-28 23 views
9

Perché la dimensione dei set in Python è notevolmente più grande di quella degli elenchi con gli stessi elementi?Perché i set sono più grandi degli elenchi in python?

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

uscita:

set size = 524488 
list size = 90088 
+2

Perché "9999 in a" viene eseguito molto più velocemente di "9999 in b"? –

+0

L'elenco python è implementato come un array dinamico, francamente la maggior parte delle strutture di dati (eccetto le tuple) consumerebbe più memoria. –

risposta

15

Il set utilizza più memoria rispetto alla list come memorizza una tabella di hash di tutti gli elementi in modo che possa rilevare rapidamente voci duplicate e così via. Questo è il motivo per cui ogni membro del set deve be hashable.

Problemi correlati