On 2/16/10, marmolro <marmo...@gmail.com> wrote: > > > 2010/2/16 Daniel Garcia Moreno <d...@danigm.net> > > > 2010/2/16 Oswaldo Hernández <lis...@soft-com.es>: > > > > > Hola, > > > > > > Tengo una lista de valores y otra de datos, quiero comprobar si uno > > > cualquiera de los valores existe en la lista de datos. En este momento > lo > > > hago utilizando un bucle for para comprobar uno a uno: > > > > > > valores = (15, 45, 190) > > > datos = (22, 33, 55, 567, 44, 234, 45) > > > existe = False > > > > > > for v in valores: > > > if v in datos: > > > existe = True > > > break > > > > > > if existe: > > > ... > > > else: > > > ... > > > > > > La pregunta es ¿Existe alguna forma mas compacta de hacerlo? > > > > > > > set(valores).intersection(set(datos)) > > > > No se si te he entendido bien, pero si es así, esto debería valer. > > > > Con List comprehensions: > > > >>> [v in datos for v in valores] > [False, True, False] > > y rizando el rizo: > > >>> True in [v in datos for v in valores] > True > > Ahora bien, no sé si a nivel de prestaciones que es mejor :) >
Esto es un poco ineficiente . Mi variante (Py>=2.5 ;o) sería {{{ #!python any(v in datos for v in valores) }}} usando generadores ;o) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/