Crear una lista con cada enésimo elemento de una lista original
En el análisis de datos o la programación, a menudo es necesario trabajar con un subconjunto de una lista. Una tarea común es crear una nueva lista que contenga solo cada enésimo elemento de la lista original. Por ejemplo, dada una lista de números enteros del 0 al 1000, ¿cómo podemos obtener una lista que incluya solo el primero y cada décimo elemento subsiguiente?
Utilizando un bucle for tradicional, podemos realizar esta tarea de la siguiente manera:
xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
if i % 10 == 0:
new_list.append(x)
Sin embargo, hay disponible un enfoque más conciso y eficiente utilizando el corte de Python:
>>> xs = list(range(1001))
>>> new_list = xs[0::10]
En esta solución, la expresión xs[0::10] crea una nueva lista que incluye cada décimo elemento a partir del índice 0. El resultado es una lista que contiene [0 , 10, 20, 30, ..., 1000] sin la necesidad de bucles o comprobaciones condicionales.
Este método es significativamente más rápido que el enfoque de bucle for, lo que resulta ventajoso cuando se trata de listas grandes. Como lo demuestra la siguiente comparación de tiempos:
$ python -m timeit -s "xs = list(range(1000))" "[x for i, x in enumerate(xs) if i % 10 == 0]"
500 loops, best of 5: 476 usec per loop
$ python -m timeit -s "xs = list(range(1000))" "xs[0::10]"
100000 loops, best of 5: 3.32 usec per loop
Este enfoque optimizado que utiliza el corte ofrece simplicidad y ventajas de rendimiento para crear nuevas listas con cada enésimo elemento de una lista original.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3