Optimizar operaciones de listas en Python

Tenemos una lista (Lista A) que contiene 2 millones de ID de los clientes que reciben un determinado servicio, por otro lado tenemos una lista (Lista B) que contiene 850,000 ID de clientes que han realizado el pago de su servicio del mes de Abril. Se necesita saber cuales son los ID de clientes que aún no han pagado su servicio.

Solución

La solución parece resultar simple, debemos de saber que IDs de la Lista A no están en la Lista B. Si bien el algoritmo parece tener todo el sentido del mundo, es importante emplear las funciones y herramientas correctas en la codificación.

Vamos a resolver este problema con 3 alternativas distintas (métodos getDifferent1, getDifferent2 y getDifferent3). El contenido de las listas se generarán de manera aleatoria y de manera secuencial. Finalmente el script mostrará en pantalla los tiempos de ejecución de las 3 alternativas.

Ejecución

Puedes descargar el código del siguiente repositorio.

La cantidad de elementos que deben tener las listas A y B son enviadas como argumentos en la invocación del script. Puedes intentar cambiar estos valores si lo deseas. El tercer argumento es para indicarle al programa que genere los elementos de ambas listas de forma aleatoria o secuencial.

Resultado

El resultado obtenido de la ejecución del script es el siguiente:

Ejercicio 1: No generando aleatoriamente los elementos de las listas A y B.

 

Ejercicio 2: Generando aleatoriamente los elementos de las listas A y B.

Triángulo de Pascal en Python

Enunciado del problema

Desarrollar un programa de consola que reciba como primer argumento un número entero positivo que indique el número de líneas del Triángulo de Pascal que se desea imprimir, la salida debería ser algo similar al siguiente gráfico:

triangulo_pascal

Tener en cuenta que salvo los números inicial y final de cada fila, el resto de números son generados sumando los dos números que se encuentran sobre su posición en la fila superior.

Solución

Para lograr la solución de este problema, debemos aplicar el uso de funciones iterativas, quedando como se aprecia a continuación: