Usando un operador 'o' en una comprensión básica de la lista de Python

Nov 26 2020

Pregunta: ¿Cómo puedo usar OR en una lista de comprensión de Python?

Estoy buscando generar cualquier número entre 0-99 que sea divisible por 5 o 7 sin resto. Tengo el siguiente código:

numbers = [x for x in range(99) if x % 5 == 0 if x % 7 == 0]

pero esto devuelve: 0, 35, 70 que son los números divisibles por 5 y 7. También intenté:

numbers = [x % 5 == 0 or x % 7 == 0 for x in range(99)]

pero esto devuelve Verdadero o Falso para cada número, donde estoy buscando obtener los números en sí. Usando esto:

numbers = [x for x in range(99) if x % 5 == 0 or if x % 7 == 0]

arroja un error de sintaxis.

Revisé las siguientes páginas pero no pude entender cómo aplicar las soluciones si se presentaban. Cada uno de ellos parecía ofrecer matices a mi solución deseada, pero no era lo que estaba buscando.

datacamp.com/community/tutorials/python-list-comprehension

programiz.com/python-programming/list-comprehension

uso-de-u-operador-en-función-python-lambda

no-comprensión-lista-comprensión-en-python

hay-un-operador-binario-en-python-que-funciona-en-matrices

cómo-convertir-este-mi-código-en-una-lista-comprensión

Python-list-comprensión-con-múltiples-ifs

Respuestas

1 WasifHasan Nov 26 2020 at 10:59

¡No uses otro if!

numbers = [x for x in range(99) if (x % 5 == 0) or (x % 7 == 0)]
print(numbers)

Porque ifes una declaración y esas son expresiones, y luego haz ory usa iftaquigrafía para verificar.