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.

Como generar una cadena aleatoria de letras y números en PHP

PHP

PHP

Si estas buscando como generar una cadena compuesta de letras y/o números al azar, puedes guiarte de este script para obtener dicho resultado en forma aleatoria.

El script esta desarrollado en PHP, y ademas de generar la cadena aleatoria, te permite indicarle de que longitud deseas que devuelva el string aleatorio.

<?php
//declaramos la funcion : randomString
function randomString($length, $type = '') {
    // Seleccionamos el tipo de caracteres que deseas que devuelva el string
    switch ($type) {
        case 'num':
            // Solo cuando deseas que devuelva numeros.
            $salt = '1234567890';
            break;
        case 'lower':
            // Solo cuando deseas que devuelva letras en minusculas.
            $salt = 'abcdefghijklmnopqrstuvwxyz';
            break;
        case 'upper':
            // Solo cuando deseas que devuelva letras en mayusculas.
            $salt = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
            break;
        default:
            // Para cuando deseas que la cadena este compuesta por letras y numeros
            $salt = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
            break;
    }
    $rand = '';
    $i = 0;
    while ($i < $length) {
        //Loop hasta que el string aleatorio contenga la longitud ingresada.
        $num = rand() % strlen($salt);
        $tmp = substr($salt, $num, 1);
        $rand = $rand . $tmp;
        $i++;
    }
    //Retorno del string aleatorio.
    return $rand;
}
 
//Para llamar a la función.
//Para este ejemplo mostraremos un string de longitud de 10 caracteres, entre letras y números
echo randomString(10, $type = '');