Listas en Python: cómo crearlas, modificarlas y recorrerlas
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Piensa en tu lista de reproducción favorita. Tiene un montón de canciones guardadas en un orden concreto. Puedes añadir canciones nuevas, quitar las viejas, cambiarlas de orden o saltar directamente a la canción número cinco.
Una lista de Python funciona exactamente así. Es una colección ordenada de elementos que puedes cambiar cuando quieras. Listas de compras, nombres de estudiantes, récords de puntuación, colores de píxeles: las listas son una de las herramientas más útiles de todo Python.
En esta lección aprenderás a crear listas, a acceder a sus elementos por posición, a añadir y quitar elementos, a recorrerlas, a sacar porciones de ellas (slicing) y a evitar los errores más comunes de los principiantes.
Cómo crear una lista en Python
Para crear una lista, escribe los elementos entre corchetes [], separados por comas. Cada elemento puede ser de cualquier tipo: cadenas de texto, números, booleanos o incluso otras listas.
['apple', 'banana', 'cherry'] [95, 87, 72, 100, 68] ['Alice', 15, True, 3.14]
Cada elemento de la lista tiene una posición llamada índice. El primer elemento está en el índice 0, el segundo en el índice 1, y así sucesivamente. Esta regla de "empezar en cero" se cumple en casi todos los lenguajes de programación.
También puedes crear una lista vacía e ir añadiéndole elementos después. Es algo habitual cuando no sabes de antemano qué va a contener tu lista.
[] [] ['h', 'e', 'l', 'l', 'o']
Cómo acceder a los elementos de una lista por índice en Python
Para obtener un solo elemento de una lista, escribe su número de índice entre corchetes después del nombre de la lista. Recuerda: los índices empiezan en 0, no en 1.
red green purple
Python también admite índices negativos, que cuentan desde el final de la lista. -1 es el último elemento, -2 el penúltimo, y así sucesivamente.
purple yellow red
Los índices negativos son especialmente prácticos cuando quieres el último elemento pero no sabes cuánto mide la lista. my_list[-1] siempre te da el último.
3 blue
Cómo modificar listas en Python
Las listas son mutables, lo que significa que puedes cambiarlas después de crearlas. Puedes sustituir elementos concretos, añadir otros nuevos o combinar varias listas.
Cambiar un elemento por su índice
Para reemplazar un elemento concreto, asigna un valor nuevo a su índice. Esto sobrescribe por completo el valor anterior.
['apple', 'banana', 'cherry'] ['apple', 'mango', 'cherry']
Añadir elementos con append(), insert() y extend()
Python te ofrece tres formas de añadir elementos a una lista. Cada una funciona de forma un poco distinta.
['milk', 'eggs', 'bread'] ['milk', 'butter', 'eggs', 'bread'] ['milk', 'butter', 'eggs', 'bread', 'cheese', 'juice']
a = [1, 2, 3]
a.append([4, 5])
print(a) # [1, 2, 3, [4, 5]]a = [1, 2, 3]
a.extend([4, 5])
print(a) # [1, 2, 3, 4, 5]Cómo eliminar elementos de una lista en Python
Igual que hay varias formas de añadir elementos, Python te da varias formas de quitarlos. La opción correcta depende de si conoces el valor o la posición.
['cat', 'fish', 'hamster', 'dog'] fish ['cat', 'hamster', 'dog'] dog ['cat', 'hamster']
remove() busca un valor y elimina la primera coincidencia que encuentra. Si el valor no existe, Python lanza un ValueError.
pop() elimina por posición y te devuelve el elemento eliminado. Es útil cuando necesitas usar ese elemento después de quitarlo, como al repartir cartas de una baraja.
[20, 30, 40, 50] []
Cómo recorrer una lista en Python
Una de las cosas más potentes que puedes hacer con una lista es recorrerla con un bucle: ejecutar un trozo de código una vez por cada elemento. Así procesas cien elementos sin escribir cien líneas.
apple banana cherry
Léelo así: "por cada fruta (fruit) de la lista fruits, imprime esa fruta". Python toma el primer elemento, ejecuta el código indentado, toma el siguiente elemento, lo vuelve a ejecutar, y así hasta terminar la lista.
A veces necesitas el número de índice además del elemento. La función enumerate() te da las dos cosas.
0: apple 1: banana 2: cherry
También puedes recorrer la lista con un rango de números de índice. Es útil cuando necesitas comparar o modificar elementos según su posición.
Student 1: 85 Student 2: 92 Student 3: 78 Student 4: 95 Student 5: 88
Cómo comprobar si un elemento está en una lista de Python
La palabra clave in comprueba si un valor existe en una lista. Devuelve True o False.
True False Green is in the list! Purple is NOT in the list.
Es mucho más limpio que escribir un bucle para buscar un valor a mano. Usa in siempre que necesites comprobar si algo existe en una lista.
Porciones de listas en Python (slicing)
El rebanado (slicing) te permite tomar una porción de una lista en lugar de un solo elemento. La sintaxis es list[start:end], donde start se incluye y end no se incluye.
['b', 'c', 'd'] ['a', 'b', 'c'] ['d', 'e', 'f'] ['a', 'b', 'c', 'd', 'e', 'f']
La regla de "el final no se incluye" parece rara al principio, pero tiene una ventaja: letters[:3] te da exactamente 3 elementos y letters[3:] te da el resto. Sin líos de uno de más o de menos.
Puedes añadir un tercer número llamado paso (step). Le dice a Python cuánto avanzar entre un elemento elegido y el siguiente.
[0, 2, 4, 6, 8] [0, 3, 6, 9] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Métodos útiles de las listas en Python
Las listas de Python traen muchos métodos integrados. Estos son los que usarás más a menudo.
[1, 1, 2, 3, 4, 5, 6, 9] [9, 6, 5, 4, 3, 2, 1, 1] 2
5 78 95 438 Average: 87.6
Errores comunes con las listas de Python
Las listas tienen algunos comportamientos engañosos que hacen tropezar a casi todos los principiantes. Entenderlos ahora te ahorrará horas de depuración más adelante.
[1, 2, 3, 4] [1, 2, 3, 4]
[1, 2, 3] [1, 2, 3, 4]
a = [1, 2, 3]
b = a # b IS a
b.append(4)
print(a) # [1, 2, 3, 4]a = [1, 2, 3]
b = a[:] # b is a COPY of a
b.append(4)
print(a) # [1, 2, 3]Ejercicios de práctica
¡Hora de practicar! Cada ejercicio se apoya en el anterior, y van de lo básico a lo más difícil. Intenta resolver cada uno antes de mirar las pistas.
Crea una lista llamada animals que contenga estas tres cadenas: "cat", "dog", "rabbit".
Después, imprime la longitud de la lista exactamente en este formato:
3Tienes una lista de ciudades. Usa índices negativos para imprimir la última ciudad de la lista.
Salida esperada:
TokyoTienes una lista de compras. Sigue estos pasos en orden:
1. Añade "bread" al final de la lista
2. Quita "milk" de la lista
3. Imprime la lista final
Salida esperada:
['eggs', 'cheese', 'butter', 'bread']Este código intenta imprimir el último color de la lista, pero falla con un IndexError. Corrige el error para que imprima:
purplePista: la lista tiene 4 elementos. ¿Cuáles son los índices válidos?
Escribe un programa que calcule la suma de todos los números de la lista con un bucle for. No uses la función integrada sum().
Salida esperada:
150Encuentra el número más grande de la lista con un bucle for. No uses la función integrada max().
Salida esperada:
95Lee este código con atención y predice qué va a imprimir. Piensa en qué pasa cuando dos variables apuntan a la misma lista.
Escribe la salida exacta (cada valor en una línea nueva si hay varios print).
Invierte la lista dada con un bucle. No uses reverse(), reversed() ni [::-1].
Salida esperada:
[5, 4, 3, 2, 1]Resumen: lo que aprendiste sobre las listas en Python
¡Buen trabajo por llegar hasta aquí! Este es un repaso de todo lo que ya sabes:
| Concepto | Qué hace | Ejemplo |
|---|---|---|
| Crear una lista | Guarda elementos en orden | fruits = ["a", "b"] |
| Acceder por índice | Obtiene un elemento | fruits[0], fruits[-1] |
| Modificar elementos | Cambia un valor | fruits[0] = "cherry" |
append() | Añade al final | fruits.append("date") |
insert() | Añade en una posición | fruits.insert(1, "fig") |
remove() | Elimina por valor | fruits.remove("a") |
pop() | Elimina por índice | fruits.pop(0) |
Bucle for | Procesa cada elemento | for f in fruits: |
in / not in | Comprueba si un valor está en la lista | "a" in fruits |
| Porciones (slicing) | Obtiene una parte | fruits[1:3] |
sort() / reverse() | Reordena los elementos | fruits.sort() |
len() / sum() | Cuenta o suma | len(fruits) |
Las listas son una de las estructuras de datos más usadas en Python. Casi todos los programas reales las usan: desde aplicaciones web hasta ciencia de datos o desarrollo de videojuegos.
¿Qué sigue?
En la siguiente lección, [Comprensión de listas en Python](/python/python-comprehensions), aprenderás las list comprehensions, un atajo muy potente para crear y transformar listas en una sola línea de código.
Verás cómo sustituir 4 líneas de un bucle por una sola línea limpia, y aprenderás cuándo conviene usar una comprensión y cuándo es mejor un bucle normal.