Curso de Python: 4-Estructuras de datos

Python, mediante el uso de estructuras de datos, ofrece una gran potencia y flexibilidad en la gestión de la información. Ya pudimos experimentar la utilidad y la flexibilidad de las listas, pero Python ofrece otras estructuras de datos con funcionalidades específicas, interesantes y útiles.

Secuencias
Una secuencia, genéricamente, es una colección de datos separados por comas. La secuencia más sencilla se obtiene con la función range([n],z), que retorna una lista de números enteros desde n hasta z-1:
>>> range(10) # de 0 a 9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5,16) # de 5 a 15
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Las listas son también secuencias, las cuales no tienen por qué ser consecutivas, ni estar ordenadas ni ser homogéneas. Los rangos son listas de enteros secuenciales y consecutivos.

Tuplas
Una tupla es muy similar a una lista, pero se diferencia en que sus valores son estáticos (no modificables). Las tuplas son útiles, por ejemplo, para registros de una base de datos, o para pares de coordenadas x e y.
>>> tupla = 'Alba', 1234, 3.8
>>> tupla
('Alba', 1234, 3.8)
>>> tupla[1]
1234
>>> tupla = tupla, ('Diana', 4321, 7.5) # Anidamiento
>>> tupla
(('Alba', 1234, 3.8), ('Diana', 4321, 7.5))
>>> tupla[1]
('Diana', 4321, 7.5)

Conjuntos
Un conjunto es una colección de datos no ordenados y únicos (no repetidos).
>>> material = ['Tornillo', 'Clavo', 'Tuerca', 'Tornillo', 'Llave', 'Clavo']
>>> catalogo = set(material)
>>> catalogo
set(['Tornillo', 'Tuerca', 'Clavo', 'Llave'])

Los conjuntos nos permiten realizar operaciones muy útiles:
>>> 'Tuerca' in catalogo # Está 'Tuerca' en catalogo?
True
>>> catalogo2 = set(['Tuerca', 'Alcayata', 'Destornillador', 'Llave'])
>>> catalogo-catalogo2 # elementos en catalogo pero no en catalogo2
set(['Tornillo', 'Clavo'])
>>> catalogo2-catalogo # elementos en catalogo2 pero no en catalogo
set(['Alcayata', 'Destornillador'])
>>> catalogo | catalogo2 # elementos en catalogo y catalogo2
set(['Tornillo', 'Alcayata', 'Destornillador', 'Tuerca', 'Llave', 'Clavo'])
>>> catalogo & catalogo2 # elementos comunes
set(['Tuerca', 'Llave'])
>>> catalogo ^ catalogo2 # elementos no comunes
set(['Tornillo', 'Alcayata', 'Clavo', 'Destornillador'])

Diccionarios
Un diccionario es un conjunto de datos no ordenados, referenciados y accedidos por una clave única, en lugar de por un índice. Está compuesto de parejas de clave:valor. La mayor parte de las operaciones realizadas sobre el diccionario se realizan a través de la clave para localizar el valor.
>>> notas = {'Nerea':8.3, 'Alba':7.5, 'Diana':7.9}
>>> notas
{'Alba':7.5, 'Diana':7.9, 'Nerea':8.3}
>>> notas['Alba'] # Retorna valor de 'Alba'
7.5
>>> notas.get('Alba') # Retorna valor de 'Alba'
7.5

Otra forma de construir un diccionario sería mediante la función dict (de Dictionary):
>>> # Construcción simple (la clave es un literal)
... notas=dict(Nerea=8.3, Alba=7.5, Diana=7.9)

Vamos a experimentar algunas operaciones con diccionarios:
>>> notas['Carlos']=7.3 # Añade nueva clave (no existe)
>>> notas
{'Alba':7.5, 'Diana':7.9, 'Nerea':8.3, 'Carlos':7.3}
>>> notas['Alba']=8.1 # Cambia valor a 'Alba' (existe)
>>> notas
{'Alba':8.1, 'Diana':7.9, 'Nerea':8.3, 'Carlos':7.3}
>>> 'Nerea' in notas # Está 'Nerea' en el diccionario?
True
>>> del notas['Nerea'] # Borrar 'Nerea' del diccionario
>>> notas.has_key('Nerea') # Está 'Nerea' en el diccionario?
False
>>> notas
{'Alba':8.1, 'Diana':7.9, 'Carlos':7.3}
>>> notas.keys() # Claves en el diccionario
['Alba', 'Diana', 'Carlos']
>>> notas.values() # Valores en el diccionario
[8.1, 7.9, 7.3]
>>> notas['Nerea']=8.3 # Añade 'Nerea' al diccionario
>>> notas
{'Diana':7.9, 'Alba':8.1, 'Nerea':8.3, 'Carlos':7.3}
>>> len(notas) # Tamaño del diccionario
4
>>> notas2=notas.items() # Copia del diccionario como lista
>>> notas2 # es una lista de tuplas, no un diccionario
[('Diana',7.9), ('Alba',8.1), ('Nerea',8.3), ('Carlos', 7.3)]
>>> notas2=notas.copy() # Copia el diccionario a notas2
>>> notas2
{'Diana':7.9, 'Alba':8.1, 'Nerea':8.3, 'Carlos':7.3}
>>> notas2.pop('Alba') # Quita a Alba del diccionario notas2
8.1
>>> notas2
{'Diana':7.9, 'Nerea':8.3, 'Carlos':7.3}
>>> notas3={'Diana':8.2, 'Sergio':5.7, 'Raul':6.5} # nuevo diccionario
>>> notas
{'Diana':7.9, 'Alba':8.1, 'Nerea':8.3, 'Carlos':7.3}
>>> notas.update(notas3) # Actualiza notas con notas3
>>> notas
{'Alba':8.1, 'Raul'_6.5, 'Diana':8.2, 'Sergio':5.7, 'Nerea':8.3,
'Carlos':7.3}



Entregas:

Enlaces de interés: