Listas en Python

Última actualización: noviembre 2024

Las listas en Python son estructuras de datos que guardan una colección de elementos que pueden ser de distinto tipo (cadenas, números, …). Estos elementos se presentan dentro de corchetes [ ] separados por comas. Un ejemplo sería el siguiente

lista=[2,"Cadiz",True,25.7]
print(type(lista))

Este código arrojaría el siguiente resultado:

<class 'list'>

que nos muestra que la variable de nombre lista que acabamos de crear es tipo ‘list’

Vamos a ver ahora algunas de las acciones más habituales con listas.

funcion len()

Nos devuelve la longitud de una lista, es decir, el número de elementos que tiene.

lista=[2,"Cadiz",True,25.7]
numElementos=len(lista)
print(f"La longitud de la lista es {numElementos}")

Resultado:

La longitud de la lista es 4

Generar una lista vacia

Sencillamente no incluimos ningún elemento cuando la creamos.

lista=[]

También podemos vaciar una lista empleando la función clear( )

numeros=[1,3,5,7,9]
print("lista numeros",numeros)
numeros.clear()
print("lista numeros",numeros)

Resultado:

lista numeros [1, 3, 5, 7, 9]
lista numeros []

Accediendo a los elementos de una lista

Podemos acceder a un elemento concreto de la lista, a través de su índice. Los índices comienzan en cero

lista=[2,"Cadiz",True,25.7]
print(f"el primer elemento de la lista es {lista[0]}")
print(f"el tercer elemento de la lista es {lista[2]}")

Resultado:

el primer elemento de la lista es 2
el tercer elemento de la lista es True

Podemos recorrer la lista empezando por el final, empleando índices negativos. Para -1 recuperamos el último elemento, para -2 el penultimo y así sucesivamente.

lista=[2,"Cadiz",True,25.7]
print(f"el ultimo elemento de la lista es {lista[-1]}")
print(f"el penultimo elemento de la lista es {lista[-2]}")

Y el resultado sería:

el ultimo elemento de la lista es 25.7
el penultimo elemento de la lista es True

Es posible recuperar también un rango de elementos, indicando los índices de los extremos separados por dos puntos [elemento_inicial:elemento_final] (no recupera el último elemento)

lista=[2,"Cadiz",True,25.7]
trozo=lista[1:3]
print(trozo)

Resultado:

['Cadiz', True]

Si queremos extraer un fragmento desde el principio hasta una posición, dejamos el índice del extremo inicial vacio y indicamos hasta que índice queremos recuperar en el extremo final (recordar este último elemento no se incluye). Y al contrario, si quisiéramos obtener un fragmento desde una posición hasta el final de la lista, indicamos en el extremo inicial el índice del elemento que inicia el fragmento y dejamos vacio el elemento final:

lista=[2,"Cadiz",True,25.7]
fragmento1=lista[:3]
fragmento2=lista[1:]
print("fragmento1= ",fragmento1)
print("fragmento2= ",fragmento2)

Resultado:

fragmento1=  [2, 'Cadiz', True]
fragmento2=  ['Cadiz', True, 25.7]

Comprobando si un elemento está en una lista

Para comprobar si un elemento está incluido en una lista, empleamos el operador in. El primer operando es el elemento que queremos comprobar si está en la lista y el segundo es la lista. La operación devuelve un booleano:True/False

lista=["Cadiz","Sevilla","Cordoba","Madrid","Leon","Gijon"]
ciudad="Cadiz"
if(ciudad in lista):
    print(f"{ciudad} está en la lista")
else:
    print(f"{ciudad} no está en la lista")

Resultado:

Cadiz está en la lista

count (<elemento>): Utilizando la función count(<elemento>) podemos saber el número de veces que aparece un elemento en una lista. Sencillamente le pasamos el valor de dicho elemento y la función count(<elemento>) devuelve el número de veces que aparece en la lista.

lista=["Cadiz","Sevilla","Cadiz","Madrid"]
ciudad="Cadiz"
veces= lista.count(ciudad)
print(f"{ciudad} aparece {veces} veces en la lista")

Resultado:

Cadiz aparece 2 veces en la lista

Modificando los elementos de una lista

Las variables de tipo lista son mutables, lo cual quiere decir que se pueden modificar. Además, una lista, admite valores repetidos. Podemos cambiar el valor de un elemento de una lista accediendo a él a través del índice.

lista=["Cadiz","Sevilla","Cordoba","Madrid"]
indice=2
print(lista[indice])
lista[2]="Gijon"
print(lista[indice])

Y el resultado:

Cordoba
Gijon

Borrar elementos de una lista

Podemos borrar el elemento indicando su posición o por su valor.

Para borrar indicando su posición, tenemos dos funciones: del y pop

  • del(posición): borra el elemento y no devuelve nada
lista=["Cadiz","Sevilla","Cordoba","Madrid"]
indice=1
del(lista[indice])
print(lista)

Resultado:

['Cadiz', 'Cordoba', 'Madrid']
  • pop(posición): borra el elemento y devuelve el elemento borrado.
lista=["Cadiz","Sevilla","Cordoba","Madrid"]
print(f"lista inicial: {lista}")
indice=1
ciudad_borrada=(lista.pop(indice))
print(f"Ciudad eliminada: {ciudad_borrada}")
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba', 'Madrid']
Ciudad eliminada: Sevilla
nueva lista ['Cadiz', 'Cordoba', 'Madrid']

Si usamos pop() sin indicar índice, borraremos el último elemento de la lista, que equivale al último elemento introducido, como si fuera una pila, el que está en lo más alto.

lista=["Cadiz","Sevilla","Cordoba","Madrid"]
print(f"lista inicial: {lista}")
ciudad_borrada=(lista.pop())
print(f"Ciudad eliminada: {ciudad_borrada}")
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba', 'Madrid']
Ciudad eliminada: Madrid
nueva lista ['Cadiz', 'Sevilla', 'Cordoba']

Por otro lado, para borrar un elemento de una lista por su valor, usamos la función remove(valor).

  • remove(valor): Eliminamos la primera aparición del elemento
lista=["Cadiz","Sevilla","Cordoba","Madrid","Cadiz","Merida"]
print(f"lista inicial: {lista}")
lista.remove("Cadiz")
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba', 'Madrid', 'Cadiz', 'Merida']
nueva lista ['Sevilla', 'Cordoba', 'Madrid', 'Cadiz', 'Merida']

La función remove sólo elimina la primera aparición del elemento, con lo que tendremos que usar un bucle while para eliminarlos todas las apariciones del valor, mientras exista el valor en la lista.

lista=["Cadiz","Sevilla","Cordoba","Madrid","Cadiz","Merida","Cadiz"]
print(f"lista inicial: {lista}")
borrar_ciudad="Cadiz"
while (borrar_ciudad in lista):
    lista.remove(borrar_ciudad)
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba', 'Madrid', 'Cadiz', 'Merida', 'Cadiz']
nueva lista ['Sevilla', 'Cordoba', 'Madrid', 'Merida']

Añadir elementos a una lista

  • append( ): Con esta función añadimos un elemento al final de la lista, pasando como parámetro el elemento que queremos añadir.
lista=["Cadiz","Sevilla","Cordoba"]
print(f"lista inicial: {lista}")
lista.append(5)
lista.append("Madrid")
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba']
nueva lista ['Cadiz', 'Sevilla', 'Cordoba', 5, 'Madrid']

Recordemos que los elementos de una lista pueden ser de distinto tipo

  • insert( <posicion>,<elemento> ): inserta el elemento <elemento> en la posición <posición>
lista=["Cadiz","Sevilla","Cordoba"]
print(f"lista inicial: {lista}")
lista.insert(2,"Puerto de Santa Maria")
print(f"nueva lista {lista}")

Resultado:

lista inicial: ['Cadiz', 'Sevilla', 'Cordoba']
nueva lista ['Cadiz', 'Sevilla', 'Puerto de Santa Maria', 'Cordoba']
  • extend(<list>): añade al final de una lista, los elementos de la lista que se le pase como parámetro.
lista=["Cadiz","Sevilla","Cadiz","Madrid"]
añadidos=["Gijon","Leon","Pontevedra"]
lista.extend(añadidos)
print(lista)

Resultado:

['Cadiz', 'Sevilla', 'Cadiz', 'Madrid', 'Gijon', 'Leon', 'Pontevedra']

Ordenar los elementos de una lista

  • sorted(<lista>): La función sorted( ) nos permite ordenar los elementos de una lista que le pasemos como parámetro. Con el parámetro reverse, podemos indicar si queremos ordenar en orden descendente.
ciudades=["Cadiz","Sevilla","Cordoba","Gijon","Bilbao","Santander"]
ciudades_ordenAscendente=sorted(ciudades)
ciudades_ordenDescendente=sorted(ciudades,reverse=True)
print("--Lista inicial:---")
print(ciudades)
print("--Lista ordenada en orden ascendente:---")
print(ciudades_ordenAscendente)
print("--Lista ordenada en orden descendente:---")
print(ciudades_ordenDescendente)

Resultado:

--Lista inicial:---
['Cadiz', 'Sevilla', 'Cordoba', 'Gijon', 'Bilbao', 'Santander']
--Lista ordenada en orden ascendente:---
['Bilbao', 'Cadiz', 'Cordoba', 'Gijon', 'Santander', 'Sevilla']
--Lista ordenada en orden descendente:---
['Sevilla', 'Santander', 'Gijon', 'Cordoba', 'Cadiz', 'Bilbao']

Obviamente, también funciona con números

Además. disponemos de la función reverse( ) que nos permite invertir el orden de los elementos en la lista: El último pasaría a ser el primero, el penúltimo el segundo y así sucesivamente. No hay que confundir el método reverse( ) con el parámetro reverse que empleábamos en el método sorted( )

numeros=[1,3,5,7,9]
print("lista numeros",numeros)
numeros.reverse()
print("lista numeros",numeros)

Resultado

lista numeros [1, 3, 5, 7, 9]
lista numeros [9, 7, 5, 3, 1]

Anidar listas en listas

Los elementos de una lista pueden ser cualquier tipo de objeto, y eso incluye otra lista.

sur=["Cadiz","Sevilla","Cordoba"]
norte=["Gijon","Bilbao","Santander"]
ciudades=[sur,norte,["Madrid","Caceres","Toledo"]]
print(f"ciudades: {ciudades}")

Resultados:

ciudades: [['Cadiz', 'Sevilla', 'Cordoba'], ['Gijon', 'Bilbao', 'Santander'], ['Madrid', 'Caceres', 'Toledo']]

Para acceder a un elemento de una lista incluida en otra lista, accedo a través de los índices de forma jerárquica: primero el índice de la posición de la lista incluida y después el índice del elemento en la lista incluida.

Empleando el ejemplo anterior, para acceder al elemento “Gijon”, primero indicamos el índice de la posición que ocupa la lista dentro de la lista principal (segundo elemento: índice =1) y luego indicamos el índice de la posición que ocupa el elemento en la lista incluida (primer elemento: índice=0)

sur=["Cadiz","Sevilla","Cordoba"]
norte=["Gijon","Bilbao","Santander"]
ciudades=[sur,norte,["Madrid","Caceres","Toledo"]]
ciudad=ciudades[1][0]
print(f"ciudad: {ciudad}")

Resultado:

ciudad: Gijon

Copiar listas

Existen diferentes formas de asignar los valores de una lista a otra. Si empleamos una asignación, el resultado es que ambas listas referencian el mismo objeto y al modificar una, modificamos la otra.

lista1=[1,3,5,7,9,11]
print(f"El primer elemento de lista1 es {lista1[0]}")
lista2=lista1
lista2[0]=0
print(f"El primer elemento de lista1 es {lista1[0]}")

Resultado:

El primer elemento de lista1 es 1
El primer elemento de lista1 es 0

Para asignar los valores de una lista a otra y que sean dos objetos independientes, empleamos el método copy. En el ejemplo siguiente, se copia lista1 en lista2, y las modificaciones que hagamos sobre la última no afectan a la primera.

lista1=[1,3,5,7,9,11]
print(f"El primer elemento de lista1 es {lista1[0]}")
lista2=lista1.copy( )
lista2[0]=0
print(f"El primer elemento de lista1 es {lista1[0]}")

Resultado:

El primer elemento de lista1 es 1
El primer elemento de lista1 es 1

También podríamos utilizar índices para copiar un conjunto de elementos de una lista a otra. Sencillamente seleccionamos el rango de elementos que queramos copiar indicando los indices de principio y fin (recuerda que python no incluye el indice final del rango). Por ejemplo, el siguiente código copia los elementos desde la segunda posición (indice 1) a la cuarta (indice 3).

lista1=[1,3,5,7,9,11]
print(f"lista1 es :{lista1}")
lista2=lista1[1:4]
print(f"lista2 es {lista2}")

El resultado:

lista1 es :[1, 3, 5, 7, 9, 11]
lista2 es [3, 5, 7]

e indicando todos los indices podríamos copiar la lista entera

lista2=lista1[:]

Funciones en listas de numeros

Hay algunas funciones muy útiles cuando nuestra lista es de números:

  • min(lista): devuelve el valor mínimo
  • max (lista): devuelve el valor máximo
  • sum (lista): devuelve la suma de los elementos de la lista
numeros=[1,3,5,7,9]
print("valor minimo",min(numeros))
print("valor maximo",max(numeros))
print("suma de todos los numeros ",sum(numeros))

Resultado:

valor minimo 1
valor maximo 9
suma de todos los numeros  25

Emplearemos las listas cuando trabajemos con conjuntos de datos que se puedan repetir y que tengamos que modificar

NOTA:

Este post es parte de la colección “Python”. Puedes ver el índice de esta colección aquí.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.