"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo generar una nueva lista con cada enésimo elemento de una lista original?

¿Cómo generar una nueva lista con cada enésimo elemento de una lista original?

Publicado el 2024-11-08
Navegar:336

How to Generate a New List with Every Nth Item from an Original List?

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.

Declaración de liberación Este artículo se reimprime en: 1729392499 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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