7. Listas
Vídeo
Notas personales
Una lista es una estructura de datos que nos permite almacenar gran cantidad de valores. En Python, estos pueden añadirse de manera dinámica y ser de diferentes tipos.
Su sintaxis es nombre = [elem1, elem2, elem3...]
y los elementos están localizados mediante un índice, que en Python comienza por 0.
A continuación, creemos una lista con cuatro elementos de tipo texto y veamos cómo imprimirla y acceder a elementos concretos de ella:
mi_lista = ["María", "Pepe", "Marta", "Antonio"]
print(mi_lista) # ["María", "Pepe", "Marta", "Antonio"]
print(mi_lista[:]) # ["María", "Pepe", "Marta", "Antonio"]
print(mi_lista[2]) # Marta
print(mi_lista[0]) # María
Si empleamos índices que superan el rango de elementos de una lista, Python nos arroja un error:
print(mi_lista[4])
# IndexError: list index out of range
No obstante, sí es posible utilizar índices con valor negativo, que nos permiten acceder (empezando por -1
) a los elementos de una lista desde la derecha:
print(mi_lista[-1]) # Antonio
print(mi_lista[-3]) # Pepe
Obviamente, esta estrategia también está limitada por el número de elementos de la lista y no podemos pasar índices negativos fuera de su correspondiente rango:
print(mi_lista[-5])
# IndexError: list index out of range
Además, podemos acceder a porciones de una lista, mediante la sintaxis nombre[a:b]
, que extrae todos los elementos comprendidos entre los índices a
y el anterior a b
. Por ejemplo:
print(mi_lista[0:2]) # ["María", "Pepe"]
print(mi_lista[0:1]) # ["María"]
print(mi_lista[-3:-1]) # ["Pepe", "Marta"]
Se pueden omitir algunos de los anteriores índices indicados y Python sobreentiende que comienza o acaba en el extremo correspondiente:
print(mi_lista[:2]) # ["María", "Pepe"]
print(mi_lista[2:]) # ["Marta", "Antonio"]
print(mi_lista[-2:]) # ["Marta", "Antonio"]
Nota técnica: cuando accedemos a una porción, se conserva el tipo lista, pero no así si se extrae un único elemento en particular.
print(type(mi_lista[2])) # <class 'str'>
print(type(mi_lista[2:3])) # <class 'list'>
Agregamos elementos al final de la lista utilizando .append()
:
mi_lista.append("Sandra")
print(mi_lista) # ["María", "Pepe", "Marta", "Antonio", "Sandra"]
Usaremos .insert(posición, elemento)
, si buscamos añadir un elemento en un punto intermedio:
mi_lista.insert(2, "Paco")
print(mi_lista) # ["María", "Pepe", "Paco", "Marta", "Antonio", "Sandra"]
Es posible agregar varios elementos al final de una lista utilizando .extend()
y pasando como argumento otra lista:
mi_compra = ["Manzanas"]
print(mi_compra) # ["Manzanas"]
mi_compra.extend(["Aguacates", "Sandía"])
print(mi_compra) # ["Manzanas", "Aguacates", "Sandía"]
Para acceder al índice de un elemento, empleamos .index(elemento)
:
print(mi_lista.index("Antonio")) # 4
print(mi_compra.index("Sandía")) # 2
Si intentamos acceder al índice de elementos que no están incluidos en la lista, Python arroja un error:
print(mi_compra.index("Melón"))
# ValueError: 'Melón' is not in list
En una lista, puede haber elementos iguales en posiciones distintas. La función .index()
nos devolverá el valor del índice del primer elemento repetido:
mi_compra.extend(mi_compra)
print(mi_compra) # ["Manzanas", "Aguacates", "Sandía", "Manzanas", "Aguacates", "Sandía"]
print(mi_compra.index("Manzanas")) # 0
Para comprobar si un elemento se encuentra o no en una lista, utilizamos in
:
print("Pepe" in mi_lista) # True
print("Ana" in mi_lista) # False
Tal y como mencionamos arriba, una lista puede almacenar sin problemas elementos de diferentes tipos:
mezcla = ["Alexis", True, 10, 3.14]
print(mezcla) # ["Alexis", True, 10, 3.14]
Para eliminar elementos, usamos .remove()
:
mezcla.remove(True)
print(mezcla) # ["Alexis", 10, 3.14]
En particular, podemos suprimir el último elemento de una lista mediante .pop()
:
mezcla.pop()
print(mezcla) # ["Alexis", 10]
El operador +
concatena listas:
lista1 = ["Ana", 5]
lista2 = [True, 2.1]
lista3 = lista1 + lista2
print(lista3) # ["Ana", 5, True, 2.1]
El operador *
repite la lista un número determinado de veces.
print(lista1 * 2) # ["Ana", 5, "Ana", 5]
Código fuente
El código fuente y los posibles ficheros externos generados correspondientes a esta lección se encuentran disponibles para su consulta en la carpeta /lecciones/07/
del
repositorio.