Apuntes sobre Python: Las Colecciones

Las colecciones pertenecen a los tipos básicos de datos en Python. Una colección es un objeto que almacena un grupo de objetos que no deben porque ser todos del mismo tipo.

Existen seis tipos de colecciones diferentes:

  1. Listas
  2. Tuplas
  3. Diccionarios
  4. Conjuntos
  5. Pilas
  6. Colas

Las listas

  • Es un tipo de colección ordenada.
  • Puede contener cualquier tipo de dato.
  • Sus datos son mutables.
  • Su constructor son los corchetes: [ ]
lista = ['valor', 1, True, ['lista', 2, 'esta vez anidada']]

Para acceder a un valor de la lista se puede

  • Indicar la posición del elemento entre los corchetes.
  • Hacer uso del slicing. (Ver slice)
lista[0]  # 'valor'
lista[0:2]  # ['valor', 1]
lista[:-2] # ['valor', 1]
lista[-1]  # ['lista', 2, 'esta vez anidada']
lista[-1][2]  # 'esta vez anidada'

Los índices pueden ser negativos, lo que permite comenzar la búsqueda por el final de la lista.

Funciones:

  1. append(value)
  2. insert(value)
  3. remove(i)
  4. clear()
  5. index(value)
  6. count()
  7. sort(key=None, reverse=False)
  8. reverse()

Las tuplas

  • Es un tipo de colección ordenada.
  • Puede contener cualquier tipo de dato.
  • Sus datos son inmutables. (Una vez establecidos, no pueden ser modificados)
  • Su constructor es la coma, aunque por convención se hace uso de los paréntesis: ( )
t = 1,  # type(t) -> tuple
i = 1  # type(i) -> int

t = (1,)  # type(t) -> tuple
i = (1)  # type(i) -> int

t = (1, 2,) # type(t) -> tuple
i = (1, 2) # type(i) -> tuple

Como se puede apreciar, cuando se declara una tupla de un único elemento se hace necesario el uso de una coma.

Para acceder a un valor de la lista se puede hacer uso de los corchetes (Sigue las mismas reglas que las listas)

  • Indicar la posición del elemento entre los corchetes.
  • Hacer uso del slicing. (Ver slice)
t[0]t[-1]

Funciones

  1. index(value)
  2. count()

Los diccionarios

Son de las colecciones más utilizadas en Python. Se basan enuna estructura mapeada donde cada elemento de la colección es almacenado con una clave única.

Como clave de un diccionario podríamos utilizar cualquier valor inmutable, como números, cadenas, booleanos, tuplas, etc. pero no listas ni otros diccionarios.

  • Es un tipo de colección desordenada.
  • Puede contener cualquier tipo de dato.
  • Sus datos son mutables.
  • Su constructor son las llaves: { }
traducciones = {
    'car' :'coche',
    'table': 'mesa'
}
traducciones['car']  # coche

Para acceder a un valor de la lista se puede hacer uso de los corchetes

  • Indicar la posición del elemento entre los corchetes.
  • No se puede hacer uso del slicing debido a que un diccionario no es una secuencia, si no un mapping (mapeados, asociaciones).

Funciones

  1. len(dict)
  2. del(dict[key])
  3. iter(dict)
  4. clear(dict)
  5. copy()
  6. get(key)
  7. items()
  8. keys()
  9. pop(key)
  10. popitem()
  11. values()

Los conjuntos

  • Es un tipo de colección desordenadas de elementos únicos.
  • Puede contener cualquier tipo de dato.
  • Su constructor son las llaves: { }
conjunto = set()  # type(conjunto) -> set
conjunto = set([1, True, 'A'])  # type(conjunto) -> set
conjunto = { }  # type(conjunto) -> set

Gracias a que los conjuntos reciben en el constructor set como parámetro una lista, mediante el casteo de objetos podemos eliminar de una lista todos los duplicados. Veamos un ejemplo:

l = [1, 2, 4, 5, 3, 4, 5]
l = list(set(l))
print(l)  # [1, 2, 3, 4, 5]

El uso más frecuente que se le da a los conjuntos son las pruebas de pertenencia al grupo, a parte de la eliminación de duplicados como hemos visto antes. Para realizar una prueba de pertenencia haremos uso de la palabra reservada in.

conjunto = set([1, True, 'A'])
'A' in conjunto # True
'2' in conjunto # False

Funciones

  1. len(set)
  2. union(set)
  3. difference(set)
  4. copy()
  5. add(elem)
  6. remove(elem)
  7. discard(elem)
  8. pop()
  9. clear()

Las pilas

Python no implementa directamente pilas, pero se pueden simular con listas.

Una pila será siempre una lista, por lo que se le aplicarán todas sus características. Pero tiene algunas particularidades a la hora de la inserción y la consulta de valores.

A nivel lógico, una pila solo debe permitir realizar dos acciones sobre una colección de datos.

  1. Añadir (push) un elemento a la pila.
  2. Sacar (pop) el último elemento añadido a la pila.

En una pila, el último elemento en entrar, es el primero en salir.

En inglés, se conoce a las pilas como estructuras LIFO (Last IN, First OUT).

pila = [1, 2, 3]
pila.pop()  # 3

La cola

Python no implementa directamente colas, pero se pueden simular con listas.

Una cola será siempre una lista, por lo que se le aplicarán todas sus características. Pero tiene algunas particularidades a la hora de la inserción y la consulta de valores.

A nivel lógico, una cola solo debe permitir realizar dos acciones sobre una colección de datos.

  1. Encolar (append) un nuevo valor al final de la cola.
  2. Desencolar (popleft) el primer elemento añadido a la cola. (REQUIERE IMPORTAR deque)
from collections import deque

En inglés, se conoce a las colas como estructuras FIFO (First IN, First OUT).

cola = deque() cola.append('coche', 'silla')
cola.popleft()  # coche