como formar grupos con los componentes de una lista
Jose Caballero
jcaballero.hep en gmail.com
Mie Ago 27 15:41:08 CEST 2008
Hola Chema,
he probado tu primer ejemplo, y me temo que no da el resultado deseado.
Lo que él quiere es tener agrupadas juntas las parejas 5 y 11, 11 y 7, 4 y
5.
Saludos,
Jose
El 27 de agosto de 2008 7:34, Chema Cortes <pych3m4 en gmail.com> escribió:
> El día 26 de agosto de 2008 18:54, Francisco Santoyo Santos
> <patximotxo en yahoo.es> escribió:
> > 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
>
> Sin duda que habrá muchas maneras. Aquí te pongo una "elegante",
> aunque me temo que te va a costar entenderla:
>
> #iterador que devuelve pares compuestos por un item y una lista de los
> items que le siguen
> def restos(lista):
> l=lista[:] #copia de trabajo
> while l:
> yield l.pop(0),l
>
>
> lista2= [ (x,y) for (x,resto) in restos(lista) for y in resto
> if any(i for i in x if i in y)
> ]
>
>
> Supongo que te costará entenderlo. Te poco una versión menos
> optimizada, pero más comprensible:
>
> lista2=[]
> for i in range(len(lista)):
> x=lista[i]
> for y in lista[i+1:]:
> if any(i for i in x if i in y):
> lista.append([x,y])
>
>
> Lo único raro te será el any(), que usa un iterador como argumento. Si
> no lo entiendes, después de revisar la documentación, no dudes en
> preguntarnos.
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
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