Reducción del tiempo de ejecución en Python usando listas de comprensión

Prerrequisitos: Comprensiones en Python

La mayoría de los programadores competitivos que codifican en Python a menudo enfrentan dificultades para ejecutar los programas dentro del límite de tiempo dado. Las comprensiones de lista nos ayudan a reducir el tiempo de ejecución de un programa en el que se requiere crear una lista basada en cualquier expresión matemática. Consideraremos un ejemplo para probar la afirmación anterior.

Ejemplo: Para formar una lista de todos los números pares hasta 10**7, podemos hacerlo de las siguientes maneras

Método 1:

%%timeit -n 100
  
even =[ ]
for i in range(10**7):
    if i % 2 == 0:
        even.append(i)

Producción:
timeit-1

Método 2:

%%timeit -n 100
  
even =[i for i in range(10**7) if i % 2 == 0]

Producción:

timet-2

Podemos ver la diferencia en los tiempos de ejecución de los 2 programas anteriores, esta diferencia aumenta a medida que aumentamos el rango, también cuando la expresión matemática es un poco compleja. Esta diferencia horaria importa mucho cuando este tipo de listas son parte de un programa muy grande.

Nota: Se %%timeitutiliza la herramienta que está disponible en Jupyter Notebook, repite la ejecución de la misma celda varias veces especificadas por nosotros y devuelve el tiempo medio/promedio necesario para la ejecución del programa dado.

A continuación se encuentran los fragmentos de código de Python 3 para verificar los tiempos de ejecución de los programas anteriores,

import time 
  
  
# Using for loop
start = time.time()
a =[ ]
  
for i in range(10**7):
    if i % 2 == 0:
        a.append(i)
          
print("Execution time = ", time.time()-start)
  
# Using list comprehension
start = time.time()
   
a =[i for i in range(10**7) if i % 2 == 0]
print("Execution time = ", time.time()-start)

Producción:

Execution time =  1.558159589767456
Execution time =  0.9690220355987549

Publicación traducida automáticamente

Artículo escrito por vishwatej9991 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *