Fictizia / Master-en-Programacion-con-Python_ed1

FICTIZIA » Máster en Programación con Python — 1ª Edición
https://fictizia.com/formacion/master-programacion-python
GNU Affero General Public License v3.0
44 stars 27 forks source link

Lista dispersa #47

Open delapuente opened 5 years ago

delapuente commented 5 years ago

Implementad una lista dispersa como si se tratara de una collections.abc.MutableSequence. Una lista dispersa es aquella que está ocupada por 0s (o algún valor en particular) en su mayor parte. Ante este caso es más eficaz guardar las posiciónes en las que hay algo en un diccionario. Un uso sería este:

class SparseList:
  ...

# Creation allows setting the default value
l = SparseList(default=None)
assert len(l) == 0
# this would throw IndexError: l[0]

# Assignation always work and the list is automatically resized
l[5] = 1
assert len(l) == 6
assert l[5] == 1
assert l[2] == None

# After deleting one item, the items in greater positions shift left one index
del l[4]
assert len(l) == 5
assert l[4] == 1
# this would throw IndexError: l[5]

# The list must implement all the `MutableSequence` API
l.insert(3, 100)
assert len(l) == 6
assert l[3] == 100