como formar grupos con los componentes de una lista

lasizoillo lasizoillo en gmail.com
Mie Ago 27 17:02:36 CEST 2008


El día 26 de agosto de 2008 18:54, Francisco Santoyo Santos
<patximotxo en yahoo.es> escribió:
> Hola a todos de nuevo;
> tengo el siguiente problema:
>
> lista = [['1', '2'], ['5', '11'], ['11', '7'], ['8', '6'], ['4', '5'], ['8', '9'], ['3', '1']]
>
> ahora quiero hacer una lista compuesta de sublistas, cada una de las cuales contenga las sublistas que en la primera lista contenian elementos comunes en alguna de las dos posiciones. Es decir, obtener algo así;
>
> lista2 = [[['1', '2'],  ['3', '1']], [['5', '11'],  ['11', '7'],  ['4', '5']], [['8', '6'], ['8', '9']]]
>
> Vosotros como lo hariais?
> A mi no se me ocurre, newbie power XD
> Un saludo
>
>

A ver si he entendido bien:

Si definimos un nodo (Node) como cada una de las listas contenidas en
la lista "lista" (ej: ['1','2']). Definimos conexion (Edge) a la
relacion entre los nodos que comparten un mismo valor (ej: relacion
entre ['1', '2'] y ['3', '1'] por compartir '1'). Lo que quieres
conseguir es una lista de los nodos (Graph) que componen grafos
conexos.

Si vas a pelearte con problemas de grafos igual es bueno que recurras
a una librería.
https://networkx.lanl.gov/wiki

No se si lo tuyo es un problema puntual que se parece a uno de grafos
o algo que realmente tiene que ver con teoria de grafos. Pero espero
que este nuevo enfoque te sea de ayuda ;-)

Mi enfoque pasaría por implementar (o usar unos implementados) que
encapsularían las tareas de Graph, Node y Edge. Si supiera que el
conjunto de datos es finito y pequeño, tal vez haría una
representación del grafo en forma matricial.

Una de las formas posibles de hacerlo de forma matricial es hacer una
matriz de nxn donde n es el número de nodos. El valor de cada posicion
es 1 si estan conectados dichos nodos, 0 si no lo están. A partir de
esa matriz no debería ser dificil encontrar el resultado que buscas.

Un saludo:

Javi
Un saludo:

Javi
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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