[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