[Python-es] obtener diferencias entre elementos de dos listas de listas.

Manuel E. megutierrez en estudiantes.uci.cu
Vie Mar 5 16:05:31 CET 2010


El 05/03/10 09:36, Boris Perez Canedo escribió:
> Hola a todos.
>
> Viendo los comentarios relacionados con "Buscar índices de un array (que
> cumple condición) de forma eficiente" y el analisis profundo que este
> genero, me dio un poco de verguenza respecto a un problema que se me
> presento y del cual, incluso antes de leer estos comentarios, sabia que
> la solucion que habia propuesto no era eficiente ni mucho menos
> "elegante", pero bueno lo de elegante se lo puedo achacar a mi falta de
> experiencia con Python o tambien puede ser que la falta de elegancia
> genere la ineficiencia.
>
> No pongo mi solucion porque me da tremenda pena!
>
> Mi problema:
> Encontrar las diferencias entre los elementos de dos listas de listas
> cuyos elementos (listas) comparten entre si un elemento comun en una
> posicion dada.
> Disculpen el enredo espero entiendan mejor con lo siguiente:
>
> Entrada:
> en ste caso el elemento considerado comun se encuentra en la posicion 1
>
> L1 = [ [ 1, 1, 2] , [ 2, 3, 5 ] , [ 3, 2, 8 ] ]
>
> L2 = [ [ 2, 1, 6 ], [ 3, 2, 8 ], [ 1, 3, 5 ], [ 4, 4, 7] ]
>
> Salida:
> [ (element1 , element2, diferencia),... ]
>
> la diferencia contiene los indices donde ambos elementos difieren.
>
>
> [ ( [ 1, 1, 2 ], [ 2, 1, 6 ], [ 0, 2 ] ), ([ 2, 3, 5 ], [ 1, 3, 5 ], [ 0
> ] ), ( [ ], [ 4, 4, 7 ], [ 0, 1, 2 ] ) ]
>
> Aclarar que en ningun caso, tanto las listas de entrada como la de
> salida, tienen obligatoriamente que estar ordenadas, pero si facilita la
> solucion o implica una mejora en la eficiencia pueden ser ordenadas.
>
>
>
> Gracias de antemano.
>
>
> Saludos,
> Boris.


Echandole un vistazo rápido te puedo aconsejar que pruebes con conjuntos 
(set), me parece la solución más directa para este caso, aunque quizás 
no la más eficiente.

Slds. Manuel.



Más información sobre la lista de distribución Python-es