Foros del Web » Programando para Internet » Python »

obterner lista con elementos coincidentes

Estas en el tema de obterner lista con elementos coincidentes en el foro de Python en Foros del Web. Hola lista. Tengo una duda. Existirá alguna forma compacta de compar distintos arreglos y obtener otra lista con todos los elementos coincidentes en cada una ...
  #1 (permalink)  
Antiguo 26/05/2011, 08:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 8 meses
Puntos: 27
obterner lista con elementos coincidentes

Hola lista. Tengo una duda. Existirá alguna forma compacta de compar distintos arreglos y obtener otra lista con todos los elementos coincidentes en cada una de ellas?
Me explico. Si tuviera esto:
Código:
[['a','b','c']]
Debiería retornar:
Código:
['a','b','c']
Por otro caso con esto:
Código:
[['a','b','c'],
 ['a','c']]
Esto:
Código:
['a','c']
y con esto:
Código:
[['a','b','c'],
 ['a','c','d],
 ['b','d','c'],]
Sólo retornaría esto:
Código:
['c']
Bueno, eso es. Se que podría darme la vuelto recorrriendo las listas y preguntando por cada elemento, pero me preguntaba si existencia un método más corto, pythonesco de resolver el tema.
Saludos.

Bueno al final lo hice con intersection:
Código:
def comparacion(matriz):
        try:
                retorno = matriz[0]
                for i in xrange(1,len(matriz)):
                        retorno  = list(set(retorno).intersection(set(matriz[i])))
                return retorno
        except:
                pass
        return []
No se si seŕa la mejor manera de resolver el problema, pero funciona.
Saludos.

Última edición por refreegrata; 26/05/2011 a las 08:46
  #2 (permalink)  
Antiguo 26/05/2011, 08:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: obterner lista con elementos coincidentes

Básicamente lo que tu hiciste pero mas pythonesco.
Código Python:
Ver original
  1. s = [['a','b','c'],
  2.      ['a','c','d'],
  3.      ['b','d','c']] #Lista de elementos
  4. ss = (set(i) for i in s) #Convertimos todas listas dentro s en conjuntos
  5. print set.intersection(*ss) #Los intersectamos todos
  #3 (permalink)  
Antiguo 26/05/2011, 09:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 8 meses
Puntos: 27
Respuesta: obterner lista con elementos coincidentes

Cita:
Iniciado por razpeitia Ver Mensaje
Básicamente lo que tu hiciste pero mas pythonesco.
Código Python:
Ver original
  1. s = [['a','b','c'],
  2.      ['a','c','d'],
  3.      ['b','d','c']] #Lista de elementos
  4. ss = (set(i) for i in s) #Convertimos todas listas dentro s en conjuntos
  5. print set.intersection(*ss) #Los intersectamos todos
Genial, gracias. Estas formas pythonescas de hacer las cosas son hermosas, pero aún no las domino bien. Saludos.

Etiquetas: elementos, lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:39.