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.