2010/2/16 Olemis Lang (Simelix) <olemis...@gmail.com <olemis%2...@gmail.com> >
> 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/ > Cierto: {{{ import time valores = range(40000) datos = range(0, 10000, 3) i = time.time() True in [v in datos for v in valores] time_option1 = time.time() - i i = time.time() any(v in datos for v in valores) time_option2 = time.time() - i print time_option1 print time_option2 }}} >>> 2.96800017357 0.0 Un saludo
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/