Curso de Python / Crear listas y añadir, cambiar y eliminar elementos
Una lista conserva elementos en orden y permite modificarlos. Al ordenar o copiar datos, distingue las operaciones que cambian la lista original de las funciones que devuelven una lista nueva; esa diferencia evita perder referencias o alterar datos compartidos.
Elegir la operación según lo que necesitas cambiar
Las listas se crean con corchetes y su primera posición tiene índice cero. Pueden contener duplicados y elementos de diferentes tipos. Sin embargo, los datos que vas a sumar deben tener un significado y una unidad coherentes.
| Objetivo | Operación | Comportamiento importante |
|---|---|---|
| Añadir un elemento | items.append(valor) | Una lista pasada como argumento se añade como un único elemento anidado |
| Añadir varios elementos | items.extend(valores) | Incorpora por separado los elementos del iterable |
| Quitar por posición | items.pop(indice) | Devuelve el elemento eliminado |
| Quitar por valor | items.remove(valor) | Quita la primera coincidencia y falla si no existe |
La referencia oficial de listas explica estos métodos. Utiliza la operación cuyo comportamiento se corresponde con tu intención: añadir una colección como elemento no equivale a añadir todos sus componentes.
Ejecutar modificaciones y comparar la ordenación
Guarda este programa como lists.py en UTF-8 y ejecuta python lists.py en la carpeta de práctica con el entorno del proyecto seleccionado. En macOS o Ubuntu, fuera del entorno, utiliza python3 si ese es tu intérprete.
amounts = [3500, 8000, 2500]
amounts.append(1000)
amounts[0] = 4000
removed = amounts.pop()
print(amounts, removed)
print(sorted(amounts))
print(amounts)
amounts.sort()
print(amounts)
La salida esperada es:
[4000, 8000, 2500] 1000
[2500, 4000, 8000]
[4000, 8000, 2500]
[2500, 4000, 8000]
Se añade 1000 y después pop() lo retira, por lo que la lista conserva tres importes. La primera posición pasa a valer 4000. Compara las tres últimas líneas para comprobar cuándo cambia realmente el orden de amounts.
Distinguir cambios, resultados nuevos y copias
sorted(amounts) devuelve una lista nueva y conserva el orden de amounts. En cambio, amounts.sort() ordena esa misma lista y devuelve None. Escribir amounts = amounts.sort() hace que el nombre pase a referirse a None, no a la lista ordenada.
| Expresión | Resultado devuelto | Lista original |
|---|---|---|
| items.sort() | None | Se modifica |
| sorted(items) | Una lista nueva | Conserva su orden |
Un corte como amounts[:] hace una copia superficial del contenedor exterior. Si hay listas anidadas, esos objetos pueden seguir compartidos. Una asignación other = amounts ni siquiera copia el contenedor: añade otro nombre para el mismo objeto. La explicación de alias y objetos mutables desarrolla esa relación.
Comprobar listas vacías y cambios durante un recorrido
Consultar la posición cero o llamar a pop() en una lista vacía produce IndexError. remove() produce ValueError cuando no encuentra el valor solicitado. Decide si la ausencia de datos es una entrada válida o un incumplimiento de los requisitos.
Eliminar elementos de la misma lista que estás recorriendo desplaza posiciones y puede hacer que omitas elementos. Recorre una copia o construye una lista filtrada nueva, como en las comprensiones de listas.
Añade un cero a los importes del ejemplo, comprueba el total y el orden y después restaura los datos. Que una modificación no cambie la suma no significa que haya conservado la estructura de la lista.




