2010-08-28 10 views
9

¿Por qué el tamaño de los conjuntos en Python es notablemente mayor que el de las listas con los mismos elementos?¿Por qué los conjuntos son más grandes que las listas en python?

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

de salida:

set size = 524488 
list size = 90088 
+2

¿Por qué '9999 en a' se ejecuta mucho más rápido que' 9999 en b'? –

+0

La lista de Python se implementa como una matriz dinámica, francamente la mayoría de las estructuras de datos (excepto las tuplas) consumirían más memoria. –

Respuesta

15

El set utiliza más memoria que el list ya que almacena una tabla de valores hash de todos los elementos para que pueda detectar rápidamente las entradas duplicadas y así sucesivamente. Esta es la razón por la cual cada miembro del conjunto debe be hashable.

Cuestiones relacionadas