[Python-es] Duda sobre listas de listas

Rafael Gomes rggg88 en hotmail.com
Mie Mar 13 11:13:27 CET 2013


Muchas gracias vitiman te he entendido, por casualidad habia visto el modulo itertools ayer, pero no lo habia entendido bien como me podia ayudar.
Muchas gracias nuevamente a todos por sus rapidas respuestas y ayuda. 

Disculpen el incomodo :).

From: vitiman en gmail.com
Date: Wed, 13 Mar 2013 11:05:35 +0100
To: python-es en python.org
Subject: Re: [Python-es] Duda sobre listas de listas

Hola Rafael,
Si no he entendido mal la idea es eliminar las ocurrencias de una lista de listas, no?
A ver si esto te sirve


>>> import itertools>>> links=[[u'00:00:00:1b:11:b4:16:80,1', u'00:00:00:02:44:a9:b5:34,1'], [u'00:00:00:02:44:a9:b5:34,1', u'00:00:00:1b:11:b4:16:80,1']]

>>> chain = itertools.chain(*links)>>> the_list = list(chain)[u'00:00:00:1b:11:b4:16:80,1', u'00:00:00:02:44:a9:b5:34,1',

 u'00:00:00:02:44:a9:b5:34,1', u'00:00:00:1b:11:b4:16:80,1']>>> set(the_list)set([u'00:00:00:1b:11:b4:16:80,1', u'00:00:00:02:44:a9:b5:34,1'])



También lo puedes hacer la lista que recibes en modo "flattened":http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python



Échale un ojo al módulo itertools que te salva la vida en muchas ocasiones.
Saludos.






El 13 de marzo de 2013 10:36, Rafael Gomes <rggg88 en hotmail.com> escribió:





Buenos Dias amigos,
Como estan? 
Espero que bien. 

Disculpen molestar, pero yo soy nuevo en el lenguaje python y luego de hacer unos tutoriales que encontre en internet asi como otras informaciones que he visto aqui en la lista he tratado avanzar y ir buscar informaciones que se encuentran en la mini red utilizada donde trabajo.



Es asi yo hago un pedido curl para el servidor y obtengo la lista de maquinas que estan conectadas a mi red en uno de los siguientes formatos:

[[u'00:00:00:02:44:a9:b5:34', 1, u'00:00:00:1b:11:b4:16:80', 1], [u'00:00:00:1b:11:b4:16:80', 1, u'00:00:00:02:44:a9:b5:34', 1]]



Solo que la informacion viene en una lista de lista y viene repetida pero en orden contrária y queria eliminar la repeticion. Ya lei sobre los set pero no da para utilizar en una lista de lista que no es hashable. Ya trate algunas experimentaciones con for e if, como por ejemplo: 



a=[[u'00:00:00:02:44:a9:b5:34', 1, u'00:00:00:1b:11:b4:16:80', 1], [u'00:00:00:1b:11:b4:16:80', 1, u'00:00:00:02:44:a9:b5:34', 1]]
nova_l=[]

for elem in a:
        if elem not in nova_l:


                nova_l.append(elem)
                k = nova_l
                print a

Pero no consigo quedar solo con los dos primeros o los segundos valores.

Otra forma que pensei para recebir la informacion fue esta: 


[u'00:00:00:1b:11:b4:16:80,1', u'00:00:00:02:44:a9:b5:34,1'], [u'00:00:00:02:44:a9:b5:34,1', u'00:00:00:1b:11:b4:16:80,1']]

Y trate de utilizar este codigo a ver si daba:

import string



switch=[[u'00:00:00:1b:11:b4:16:80'], [u'00:00:00:02:44:a9:b5:34']]

links=[[u'00:00:00:1b:11:b4:16:80,1', u'00:00:00:02:44:a9:b5:34,1'], [u'00:00:00:02:44:a9:b5:34,1', u'00:00:00:1b:11:b4:16:80,1']]


port_link_list=[]
t=len(links)
for i in range(t):
        for elem in links[i]:
                if elem.split(',')[0]==switch[i]:
                        port = elem.split(',')[1]
                        if port not in port_link_list:


                                port_link_list.append(elem.split(',')[1])
print port_link_list

Mi idea es conseguir que la nueva lista quede de la siguiente forma: 

[[u'00:00:00:02:44:a9:b5:34', 1],[u'00:00:00:1b:11:b4:16:80', 1]]



Si me pudiesen ayudar y decir que estoy haciendo mal, disculpen mi ignorancia.

Ya ahora tengo otra duda, si tambien me pueden ayudar. 

Suponiendo que quedo con la informacion de la manera anterior, o sea como quiero. Quiero filtrar los valores que tengo en una lista en relacion a esta. La otra lista tiene el siguiente formato:



lista1⁼[[u'00:00:00:02:44:a9:b5:34', 1],[u'00:00:00:1b:11:b4:16:80', 1]]
lista2=[[u'00:00:00:1b:11:b4:16:80,65534', u'00:1b:11:b4:16:80'], [u'00:00:00:1b:11:b4:16:80,1', u'00:1b:11:b4:16:80'], [u'00:00:00:02:44:a9:b5:34,65534', u'00:02:44:a9:b5:34'], [u'00:00:00:02:44:a9:b5:34,1', u'00:02:44:a9:b5:34']]



Mi idea aqui es hacer dos for en que comparo la primera posicion de la lista 1 con la primera posicion de la lista 2 asi como la segunda coluna de la lista 1 de cada linea con la segunda coluna de la lista 2 y hago el filtraje. Queria saber si estoy pensando bien o no.



Muchas gracias por toda vuestra ayuda. 
Disculpen el  incomodo. 

Saludos, 
Rafael Gomes
 		 	   		  

_______________________________________________

Python-es mailing list

Python-es en python.org

http://mail.python.org/mailman/listinfo/python-es

FAQ: http://python-es-faq.wikidot.com/




-- 
Victoriano Navarro Aguilar - (vitiman en gmail.com)


_______________________________________________
Python-es mailing list
Python-es en python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/ 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130313/4b3eaff6/attachment.html>


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