2.3 Listas en Python: indexación, rebanado (slicing) y métodos
1. Naturaleza mutable, creación e indexación de listas Las listas son secuencias mutables y heterogéneas indexadas desde cero: \(\text{lista} = [x_0, x_1, x_2, \dots, x_{n-1}], \quad \text{índices negativos: } [-n, \dots, -1]\) Ejemplo: Para acceder al primer y último elemento de una serie de tamaños de partícula: \(\text{tamanos} = [2.5, 4.0, 7.2, 11.8]\) \(\text{primero} = \text{tamanos}[0]; \text{ultimo} = \text{tamanos}[-1]\) 2. Rebanado de listas (slicing) y subintervalos La sintaxis lista[inicio:fin:paso] extrae una nueva sublista desde inicio hasta fin-1 con el incremento especificado: \(\text{lista}[a:b:s] \quad \longrightarrow \quad \text{elementos en índices } a, a+s, a+2s, \dots < b\) Ejemplo: Para extraer cada dos puntos de una serie espectral o invertir el orden de los datos: \(\text{submuestreo} = \text{datos}[::2] \quad \text{y} \quad \text{invertida} = \text{datos}[::-1]\) 3. Métodos dinámicos de inserción y extracción Las listas crecen o disminuyen dinámicamente mediante métodos in situ: \(\text{append(x)}, \quad \text{extend(iterable)}, \quad \text{insert(i, x)}, \quad \text{pop(i)}, \quad \text{remove(x)}\) Ejemplo: Para registrar una nueva lectura de absorbancia al final del experimento: \(\text{lecturas.append}(0.452)\) 4. Funciones de agregación matemática y ordenación Python proporciona funciones nativas de alto rendimiento sobre listas numéricas: \(\text{len(L)}, \quad \text{sum(L)}, \quad \text{min(L)}, \quad \text{max(L)}, \quad \text{sorted(L)} \quad \text{y el método in situ } \text{L.sort()}\) Ejemplo: Para calcular la media aritmética de una serie de potenciales: \(\text{media} = \text{sum}(\text{voltajes}) / \text{len}(\text{voltajes})\) Ejemplo 1: Registro cronológico de temperaturas de recocido térmico con append() y cálculo de magnitudes estadísticas.
Creación de la lista vacía y registro progresivo.
Simulamos el almacenamiento de lecturas de pirómetro:
Evaluación de magnitudes estadísticas fundamentales.
Calculamos la media y el rango térmico:
Para la serie registrada, la temperatura media es 451.50 °C con un rango de oscilación de 7.30 °C.
Extracción de una ventana espectral de resonancia plasmónica mediante slicing.
Lista de longitudes de onda en nanómetros.
Definimos la cuadrícula espectral de 400 a 700 nm en pasos de 50 nm:
Extracción del rango plasmónico centrado entre 500 y 600 nm.
Empleamos slicing delimitando los índices de interés [2:5]:
La sublista extraída contiene exactamente los tres puntos espectrales clave [500, 550, 600] nm.
Fusión y ordenación de listas de picos de difracción de rayos X procedentes de dos detectores.
Listas independientes de ángulos 2-theta medidos.
Declaramos los ángulos de dos canales de detección:
Combinación y ordenación ascendente.
Concatenamos las dos listas y ordenamos in situ:
La lista unificada y ordenada resultante es [15.2, 28.4, 32.8, 47.3, 56.1, 68.9] grados.
Depuración de lecturas corruptas con remove() y extracción de puntos de referencia con pop().
Lista de mediciones con valores espurios y marcas testigo.
Definimos la serie experimental:
Eliminación selectiva del valor erróneo y extracción del último punto.
Limpiamos la lista in situ:
La lista depurada queda con cuatro mediciones útiles y el testigo extraído preservado por separado.
Inversión temporal de un ciclo de histéresis magnética mediante slicing inverso [::-1].
Rampa de magnetización de ida (0 a +2 Tesla).
Asignamos los campos de la curva de magnetización inicial:
Generación simétrica de la rama de retorno con paso negativo.
Invertimos la secuencia con slicing con paso -1:
La rama de retorno generada es [2.0, 1.5, 1.0, 0.5, 0.0] Tesla, completando el ciclo magnético.