Listas en Python

COMPARTIR EN REDES SOCIALES

En esta entrada vamos a aprender a utilizar las listas en Python. Las listas en Python son estructuras de datos mutables que nos permiten almacenar en su interior conjuntos de datos. Por así decirlo, son contenedores de datos.

¿ Qué aspecto tiene una lista en Python ?

Una lista tiene el siguiente aspecto:

Realmente se trata de un vector donde cada elemento tiene asociado un índice numérico para acceder a dicho elemento.

¿ Qué quiere decir que se trata de una estructura de datos mutable ?

En Python existen principalmente 2 categorías de estructuras de datos, las que son mutables y las que son inmutables.

Las mutables nos permiten modificar su contenido, así como añadir nuevos elementos, por el contrario, las inmutables no nos permiten realizar modificaciones sobre las mismas, un ejemplo de estas últimas serían las tuplas.

¿ Cómo se crea una lista en Python ?

Las listas se crean en Python utilizando el operador «[]», veamos un ejemplo con una lista de cadenas:

miLista = ["Hola", "Mundo"]

Simplemente se crean los items entre el operador «[]» separados por «,». Con esto ya tenemos una lista, veamos ahora como se recorre.

¿ Cómo se recorre o itera sobre una lista ?

Existen principalmente 2 formas, mediante un for tradicional con índices y mediante un for each.

Recorriendo una lista con un for tradicional con índices

#Creamos la lista
miLista = ["Hola", "Mundo"]

#Mediante un for tradicional utilizando range e indices
for i in range(len(miLista)):
    print(miLista[i])

#Mediante un while e índices
i = 0
while i < len(miLista):
    print(miLista[i])
    i = i + 1    

Como podéis apreciar se puede recorrer tanto con un for tradicional utilizando la función range como mediante un while. La función range genera una secuencia mediante la cuál podemos ir seleccionando los índices. Fijaros que aquí la clave está en que se accede a los elementos mediante el operador «[]», ejemplo:

for i in range(len(miLista)):
    print(miLista[i])

Recorriendo una lista mediante un for each

#Creamos la lista
miLista = ["Hola", "Mundo"]

#Recorremos la lista mediante un for each
for cadena in miLista:
    print(cadena)  

En cada iteración la variable «cadena» contendrá un valor diferente de los almacenados dentro de la lista

Almacenando valores de diferente tipo dentro de la lista

En Python las listas son por defecto multitipo, es decir, podemos almacenar diferentes tipos de datos, veamos un ejemplo:

#Creamos la lista
miLista = ["Esto es una cadena", 9, 9.3, (12,13), [1,2,3]]

#Recorremos la lista mediante un for each
for elemento in miLista:
    print(type(elemento))
    print(elemento)  

Hemos creado una lista con los siguientes tipos de datos:

  1. Una cadena de texto
  2. Un número entero
  3. Un número decimal
  4. Una tupla de valores enteros
  5. Otra lista con valores enteros

Si inspeccionamos la salida de nuestro programa Python sabe perfectamente de que tipo es cada parámetro:

<class 'str'>
Esto es una cadena
<class 'int'>
9
<class 'float'>
9.3
<class 'tuple'>
(12, 13)
<class 'list'>
[1, 2, 3]

¿ Cómo añadimos elementos a una lista que ya está creada ?

Debemos utilizar el método «append» para añadir elementos al final de la lista, veamos un ejemplo:

#Creamos la lista
miLista = ["Esto es una cadena", 9, 9.3, (12,13), [1,2,3]]

#Recorremos la lista mediante un for each
for elemento in miLista:
    print(elemento)  

print("---------------------------------------")
miLista.append("Añadimos otro elemento")
miLista.append("Y otro...")
#Recorremos la lista mediante un for each
for elemento in miLista:
    print(elemento) 

La salida es la siguiente:

Esto es una cadena
9
9.3
(12, 13)
[1, 2, 3]
---------------------------------------
Esto es una cadena
9
9.3
(12, 13)
[1, 2, 3]
Añadimos otro elemento
Y otro...

¿ Cómo se borran elementos de una lista ?

Para borrar elementos de una lista podemos utilizar la función «remove» y la función «pop». La función «remove» busca un determinado elemento y cuando lo encuentra lo elimina, por el contrario la función «pop» funciona mediante índices:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#Borramos el primer y ultimo elemento
miLista.remove("Hola")
miLista.pop(2)

for cadena in miLista:
    print(cadena)

Borramos el primer y último elemento, por lo que nuestra salida es:

me
llamo

¿ Cómo se vacía una lista ?

Vaciar una lista es tan sencillo como:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#vaciamos la lista
miLista = []

¿ Cómo se buscan elementos dentro de una lista ?

Podríamos realizar la búsqueda como la realizaríamos en un lenguaje convencional como Java o C/C++, recorriendo elemento a elemento hasta encontrar el elemento buscado, pero Python nos lo pone más fácil con el operador «in»:

#Creamos la lista
miLista = ["Esto es una cadena", 9, 9.3, (12,13), [1,2,3]]

#Realizamos las busquedas
if "Esto es una cadena" in miLista:
    print("La cadena se encuentra en la lista")

if 9 in miLista:
    print("El numero 9 se encuentra en la lista")

if 10 not in miLista:
    print("El número 10 NO se encuentra en la lista")

Veamos la salida:

La cadena se encuentra en la lista
El numero 9 se encuentra en la lista
El número 10 NO se encuentra en la lista

¿ Cómo se ordenan los elementos de una lista ?

Para ordenar los elementos dentro de una lista podemos llamar al método sort:

#Creamos la lista
miLista = [6,-6,4,45,32,23,-87, -11, 12]

#Ordenamos la lista
miLista.sort()

for numero in miLista:
    print(numero)

La salida de nuestra lista ordenada:

-87
-11
-6
4
6
12
23
32
45

¿ Y si es una lista de cadenas cómo se ordena ?

Pues se ordena alfabéticamente, es decir en orden de prioridad alfabética, primero la «a», después la «b», etc… veamos un ejemplo:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#Ordenamos la lista
miLista.sort()

for cadena in miLista:
    print(cadena)

La salida(parezco yoda):

Hola
Ivan
llamo
me

¿ Cómo se concatenan 2 listas ?

Supongamos que tenemos 2 listas y queremos unirlas en solo una, se haría de la siguiente manera mediante el operador «+»:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]
miLista2 = ["y", "me", "gusta", "Python"]

#Concatenamos la lista
miLista = miLista + miLista2

for cadena in miLista:
    print(cadena)

La salida de nuestro programa:

Hola
me
llamo
Ivan
y
me
gusta
Python

¿ Y si quiero obtener una sublista a partir de una lista ?

Pues utilizamos el mecanismo de «slicing», es decir, utilizamos «[]» con en un rango, veamos un ejemplo:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#Obtenemos una sublista con las 2 primeras cadenas, realmente crea una nueva lista copiando los valores
#No son referencias de memoria, por lo tanto, cambiar el valor en la sublista no afecta a la lista original
miLista2 = miLista[0:2]

for cadena in miLista2:
    print(cadena)

#Comprobamos que cambiando el valor en la sublista no afecta a la lista original
miLista2[0] = "HOLAAAAAAAAAA"
print(miLista[0])

La salida de nuestro programa:

Hola
me
Hola

¿ Cómo se obtiene el número de elementos que tiene una lista ?

El número de elemento que contiene una lista se obtiene utilizando la función «len» y pasándole como parámetro nuestra lista:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#Obtenemos el número de elementos
numeroElementosLista = len(miLista)
print("Nuestra lista contiene:", numeroElementosLista, " elementos")

La salida:

Nuestra lista contiene: 4  elementos

¿ Cómo se copian las listas ?

Cualquiera podría pensar que con el operador «=» se podrían copiar las listas, pero realmente estaríamos asignando la dirección de memoria de una lista en la otra, por lo tanto, si hiciésemos una modificación en la lista 1 se haría en la lista 2. Por lo tanto, nunca realicéis un intento de copia haciendo una asignación en listas, utilizad la función copy:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

listaCopiada = miLista.copy()

listaCopiada[0] = "Adios"

for cadena in miLista:
    print(cadena)

print("-----------------------------")

for cadena in listaCopiada:
    print(cadena)

La salida de nuestro programa:

Hola
me
llamo
Ivan
-----------------------------
Adios
me
llamo
Ivan

Índices negativos en las listas

Si recordáis la imagen del principio os habréis dado cuenta de que las listas tienen también índices negativos:

lista python

Esto quiere decir que podemos hacer referencia al último elemento si accedemos al índice -1, y sucesivamente, veamos un ejemplo:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#La lista en orden inverso con indices negativos
print(miLista[-1])
print(miLista[-2])
print(miLista[-3])
print(miLista[-4])

La salida de nuestro programa:

Ivan
llamo
me
Hola

Darle la vuelta a una lista

Por último para finalizar con listas veremos como darle la vuelta a los elementos de una lista utilizando para ello la función «reverse»:

#Creamos la lista
miLista = ["Hola", "me", "llamo", "Ivan"]

#Le damos la vuelta a la lista
miLista.reverse()

for cadena in miLista:
    print(cadena)

La salida:

Ivan
llamo
me
Hola

Y esto ha sido todo sobre nuestra entrada de listas en python.

Os dejo un enlace a la documentación oficial de python sobre listas

Un saludo


COMPARTIR EN REDES SOCIALES

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *