Cambiar elementos de una lista
Aprende a cambiar elementos de listas en Python usando índices, slicing, append(), insert(), extend() y comprensiones de lista con ejemplos claros.
Las listas de Python son mutables, lo que significa que puedes modificar su contenido después de crearlas. Este capítulo cubre todas las técnicas prácticas para modificar elementos de una lista: asignación directa por índice, reemplazo con slicing, append(), insert(), extend() y comprensiones de lista. Entender cuándo usar cada enfoque es clave para escribir código Python limpio y eficiente.
Cambiar un solo elemento por índice
La forma más directa de cambiar un elemento es asignar un nuevo valor a su posición de índice. Los índices de las listas comienzan en 0.
fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)Salida:
['apple', 'mango', 'cherry']El índice negativo cuenta desde el final de la lista. El índice -1 es el último elemento, -2 es el penúltimo, y así sucesivamente.
colors = ["red", "green", "blue"]
colors[-1] = "yellow"
print(colors)Salida:
['red', 'green', 'yellow']Si intentas asignar a un índice que no existe, Python lanza un IndexError. Usa los patrones de acceso a listas o len() para mantenerte dentro de los límites.
Reemplazar un rango de elementos con slicing
La asignación con slicing reemplaza una sección contigua de una lista con otra lista. El slice my_list[start:end] selecciona elementos desde el índice start hasta (sin incluir) el índice end.
Salida:
[1, 20, 30, 5]Observa que la lista de reemplazo no necesita tener la misma longitud que el slice. Aquí, tres elementos (2, 3, 4) fueron reemplazados por dos elementos (20, 30), reduciendo la lista en uno.
También puedes insertar elementos sin eliminar ninguno usando un slice vacío:
letters = ["a", "b", "e"]
letters[2:2] = ["c", "d"]
print(letters)Salida:
['a', 'b', 'c', 'd', 'e']append() — agregar un elemento al final
El método append() agrega un solo elemento al final de una lista y modifica la lista en su lugar. Siempre agrega exactamente un elemento, incluso si ese elemento es en sí mismo una lista.
Salida:
[1, 2, 3, 4, 5]Agregar una lista como un solo elemento la anida en lugar de fusionarla:
my_list = [1, 2, 3]
my_list.append([4, 5])
print(my_list)Salida:
[1, 2, 3, [4, 5]]Usa extend() en su lugar cuando quieras fusionar todos los elementos de otra lista.
insert() — agregar un elemento en una posición específica
El método insert() coloca un nuevo elemento en un índice dado, desplazando todos los elementos siguientes una posición a la derecha.
Salida:
[1, 2, 99, 3, 4]insert() nunca lanza un IndexError para posiciones fuera de rango. Si pasas un índice mayor que la longitud de la lista, el elemento se agrega al final. Si pasas un índice negativo más allá del inicio, se agrega al principio.
extend() — fusionar otro iterable en la lista
El método extend() agrega cada elemento de un iterable (lista, tupla, string, etc.) al final de la lista. La lista original crece en su lugar.
Salida:
[1, 2, 3, 4, 5, 6, 7]extend() vs append() de un vistazo:
| Método | Qué agrega | Resultado para [1,2] + [3,4] |
|---|---|---|
append([3,4]) | Un elemento (una lista anidada) | [1, 2, [3, 4]] |
extend([3,4]) | Cada elemento individualmente | [1, 2, 3, 4] |
Comprensión de lista — transformar elementos con una nueva lista
La comprensión de lista crea una nueva lista aplicando una expresión a cada elemento (con un filtro opcional). Tras la comprensión, reasignas la variable — la lista original no se muta en su lugar.
Salida:
[4, 8, 12]También puedes transformar cada elemento sin filtrar:
prices = [10.0, 25.5, 8.75]
discounted = [round(p * 0.9, 2) for p in prices]
print(discounted)Salida:
[9.0, 22.95, 7.88]Usa la comprensión de lista cuando quieras una solución concisa y legible de una sola línea para producir una copia modificada de una lista.
Elegir el enfoque adecuado
| Objetivo | Mejor método |
|---|---|
| Cambiar un elemento en una posición conocida | Asignación por índice list[i] = value |
| Reemplazar un rango de elementos | Asignación con slice list[a:b] = new_items |
| Agregar un elemento al final | append() |
| Agregar un elemento en una posición específica | insert(index, value) |
| Fusionar todos los elementos de otro iterable | extend() |
| Producir una copia modificada según una regla | Comprensión de lista |
Para eliminar elementos de una lista, consulta Eliminar elementos de una lista. Para ordenar una lista en su lugar, consulta Ordenar listas. Para una referencia completa de todos los métodos de lista, consulta Métodos de lista.