Rizando más el rizo, puede que queramos guardar en una variable varias cosas, como por ejemplo una lista de la compra. ¿Cómo hacer listas en Python?
Hay varios tipos de listas en Python, aunque sólo vamos a ver dos: listas y diccionarios.
Listas en Python
Son listados de datos en los que hay un orden, por lo que tiene en cuenta la posición en la que está el elemento. Recuerda que el primer elemento es el número 0, y no el número 1. En las listas se pueden modificar sus elementos, y puede haber elementos duplicados. Se crean poniendo sus elementos entre corchetes [a,b,c, >>>].
>>> # Ejemplo de una lista. Pilotos oficiales de Ferrari en 2014.
>>> Ferrari2014=["Fernando Alonso", "Kimi Raikkonen"]
>>> print (Ferrari2014)
['Fernando Alonso', 'Kimi Raikkonen']
>>> # Ejemplo de otra lista. Pilotos oficiales de Ferrari en 2013.
>>> Ferrari2013=["Fernando Alonso", "Felipe Massa"]
>>> print (Ferrari2013)
['Fernando Alonso', 'Felipe Massa']
Las listas tienen una flexibilidad total en los elementos que pueden tener, por lo que pueden contener no sólo texto, si no también números o cualquier otro tipo de variables.
Operaciones más habituales con listas en Python
Las operaciones más habituales que se realizan en Python son las siguientes:
- lista[i]: Devuelve el elemento que está en la posición i de la lista.
- lista.pop(i): Devuelve el elemento en la posición i de una lista y luego lo borra.
- lista.append(elemento): Añade elemento al final de la lista.
- lista.insert(i, elemento): Inserta elemento en la posición i.
- lista.extend(lista2): Fusiona lista con lista2.
- lista.remove(elemento): Elimina la primera vez que aparece elemento.
Si representamos todo esto en un ejemplo:
>>> # Acceder a un elemento de la lista.
>>> print(Ferrari2014[1])
Kimi Raikkonen
>>> # pop: Extraemos a Kimi (que está en la posición número 1) de la lista. Alonso está en la posición 0.
>>> Ferrari2014.pop(1)
>>> print(Ferrari2014)
['Fernando Alonso']
>>> # append: Añadimos a Kimi al final de la lista
>>> Ferrari2014.append("Kimi Raikkonen")
>>> print (Ferrari2014)
['Fernando Alonso', 'Kimi Raikkonen']
>>> # del:Eliminamos el elemento de la primera posición de la lista (Fernando)
>>> del(Ferrari2014[0])
>>> # insert: Añadimos a Fernando en la primera posición
>>> Ferrari2014.insert(0, "Fernando Alonso")
>>> print (Ferrari2014)
['Fernando Alonso', 'Kimi Raikkonen']
>>> # extend: Juntamos los pilotos del 2013 y los del 2014. Fernando estará repetido.
>>> Ferrari2014.extend(Ferrari2013)
>>> print (Ferrari2014)
['Fernando Alonso', 'Kimi Raikkonen', 'Fernando Alonso', 'Felipe Massa']
>>> #remove: Borramos la primera vez que aparece Fernando Alonso
>>> Ferrari2014.remove("Fernando Alonso")
>>> print (Ferrari2014)
['Kimi Raikkonen', 'Fernando Alonso', 'Felipe Massa']
Nota: Otra lista bastante usada son las tuplas (tuple en inglés), que son listas que no pueden ser modificadas. No obstante, no nos hace falta para lo que vamos a hacer.
Diccionarios en Python
Como sucede con un diccionario convencional, un diccionario en Python es una palabra que tiene asociado algo. Al contrario de lo que sucedía en las listas, los diccionarios tradicionalmente no tenían orden.
A partir de la versión 3.7 de python, esto cambió, y los diccionarios guardan el orden en el que se insertaron los elementos.
Se crean poniendo sus elementos entre llaves {«a»:»Alicante», «b»:»Barcelona»,>>>}. Se denominan keys a las «palabras» y values a las «definiciones». Lógicamente, no puede haber dos keys iguales, aunque sí dos values iguales.
>>> diccionario = {'Piloto 1':'Fernando Alonso', 'Piloto 2':'Kimi Raikkonen', 'Piloto 3':'Felipe Massa'}
>>> print(diccionario)
{'Piloto 1': 'Fernando Alonso', 'Piloto 3': 'Felipe Massa', 'Piloto 2': 'Kimi Raikkonen'}
Nota: Recuerda que tiene en cuenta las mayúsculas y las minúsculas.
Operaciones más habituales con diccionarios en Python
Es similar a las listas, con el matiz de que dado que los diccionarios no tienen orden, no tienen funciones en las que se tenga en cuenta la posición.
- diccionario.get(‘key’): Devuelve el valor que corresponde con la key introducida.
- diccionario.pop(‘key’): Devuelve el valor que corresponde con la key introducida, y luego borra la key y el valor.
- diccionario.update({‘key’:’valor’}): Inserta una determinada key o actualiza su valor si ya existiera.
- «key» in diccionario: Devuelve verdadero (True) o falso (False) si la key (no los valores) existe en el diccionario.
- «definicion» in diccionario.values(): Devuelve verdadero (True) o falso (False) si definición existe en el diccionario (no como key).
Poniendo todo esto en un ejemplo:
>>> # get(): Devuelve el valor que corresponde con la key introducida.
>>> print(diccionario.get('Piloto 1'))
Fernando Alonso
>>> # pop(): Devuelve el valor que corresponde con la key introducida, y luego borra la key y el valor.
>>> print(diccionario.pop('Piloto 1'))
Fernando Alonso
>>> print(diccionario)
{'Piloto 3': 'Felipe Massa', 'Piloto 2': 'Kimi Raikkonen'}
>>> # update(): Actualiza el valor de una determinada key o lo crea si no existe.
>>> diccionario.update({'Piloto 4':'Lewis Hamilton'})
>>> diccionario.update({'Piloto 2':'Sebastian Vettel'})
>>> print(diccionario)
{'Piloto 4': 'Lewis Hamilton', 'Piloto 2': 'Sebastian Vettel', 'Piloto 3': 'Felipe Massa'}
>>> # "key" in diccionario: devuelve verdadero (True) o falso (False) si la key existe en el diccionario.
>>> print ("Piloto 1" in diccionario)
True
>>> print ("piloto 1" in diccionario)
False
>>> print ("Sebastian Vettel" in diccionario)
False
>>> # "definición" in diccionario.values(): devuelve verdadero (True) o falso (False) si la definición existe en el diccionario.
>>> print ("Sebastian Vettel" in diccionario.values())
True
>>> # del diccionario['key']: Elimina el valor (y el key) asociado a la key indicada.
>>> del diccionario['Piloto 2']
>>> print(diccionario)
{'Piloto 4': 'Lewis Hamilton', 'Piloto 3': 'Felipe Massa'}
Conjuntos
Aunque se usan con menos frecuencia, python también dispone de conjuntos (sets).
Una característica importante de los conjuntos, es que no admiten elementos duplicados.
Aunque pueda parecer un problema, puede ser muy útil, ya que permite usarlo como truco para eliminar duplicados de una lista:
>>> lista = ['Fernando', 'Fernando', 'Felipe']
>>> print(lista)
['Fernando', 'Fernando', 'Felipe']
>>> lista = list(set(lista))
>>> print(lista)
['Fernando', 'Felipe']
Como los diccionarios, se crean usando llaves, pero entre las llaves sólo se escriben los elementos separados por coma como si se tratara de una lista (en vez de palabra: definición como se hace en los diccionarios).
>>> conjunto = {'Fernando Alonso', 'Kimi Raikkonen', 'Felipe Massa'}
>>> print(conjunto)
{'Fernando Alonso', 'Kimi Raikkonen', 'Felipe Massa'}
Los sets permiten realizar las operaciones matemáticas típicas de conjuntos como unión, intersección, etc.
Operaciones más habituales en conjuntos
- A | B: Unión entre el conjunto A y B (Los elementos del conjunta A y los elementos del conjunto B)
- A & B: Intersección entre el conjunto A y B (los elementos que están en ambos conjuntos)
- A – B: Diferencia entre el conjunto A y B (los elementos que están en A pero no están en B)
- A ^B: Diferencia simétrica entre el conjunto A y B (los elementos que están en A o en B pero no en los dos)