Lista de elementos comunes
Chema Cortes
py en ch3m4.org
Vie Mar 23 02:29:15 CET 2007
El Jueves, 22 de Marzo de 2007 19:28, Alberto Valverde escribió:
> Oops, eso está mal, mejor:
>
> comunes = set(lista[0])
> for tupla in lista[1:]:
> comunes &= set(tupla)
Personalmente, me gustan más las expresiones funcionales:
reduce(set.intersection, map(set,lista))
Lástima que el reduce() tenga sus días contandos y se esté previsto su
eliminación del lenguaje. Una solución alternativa en una sóla línea, y sin
recurrir a los conjuntos set(), sería ésta:
[i for i in lista[0] if [True for x in lista[1:] if i in x] ]
No parece que quede más claro que emplear reduce(); pero, gracias al BDFL. en
python 2.5 se introdujeron los iteradores any() y all(), con lo que quedaría
así de majo:
[i for i in lista[0] if all(i in x for x in lista[1:]) ]
Más información sobre la lista de distribución Python-es