[Python-es] Buscar varios elementos en una lista

César H. Roldán croldan en gmail.com
Mar Feb 16 14:32:30 CET 2010


El 16 de febrero de 2010 10:20, marmolro <marmolro en gmail.com> escribió:

>
>
> 2010/2/16 Daniel Garcia Moreno <dani en danigm.net>
>
> 2010/2/16 Oswaldo Hernández <listas en 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.
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>
> 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
>

o

>>> any(v in datos for v in valores) # Para que alguno exista
>>> all(v in datos for v in valores) # Para que todos existan

Saludos !


>
> Ahora bien, no sé si a nivel de prestaciones que es mejor :)
>
>
> _______________________________________________
> 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/20100216/064cd3c2/attachment.html>


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