puedo usar if
y for
en las listas por comprensión/generador de expresiones comoUsando mientras que en la comprensión de lista o generador de expresiones
list(i for i in range(100) if i*i < 30)
Sé que esto no es el más eficiente, pero toleradme como la condición podría ser mucho más complicado y esto es solo un ejemplo. Sin embargo, esto todavía pasa por cien iteraciones y sólo se obtiene un valor en la primera 6. ¿Hay una manera de decir la expresión generadora dónde parar con algo como esto:
list(i for i in range(100) while i*i < 30)
Sin embargo, while
no se entiende en el generador expresiones. Entonces, mi pregunta es, ¿cómo escribo una expresión de generador con una condición de parada para que no continúe el cálculo, incluso si no arroja nuevos valores?
Solo una nota: puede generar una lista directamente usando '[i para i en el rango (100)]' – Joril
Curiosamente, estaba [PEP3142] (https://www.python.org/dev/peps/ pep-3142 /) abierto en el momento en que se hizo esta pregunta. El caso de uso dado es casi exactamente este. Guido lo destruyó en mayo de 2013 –