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