posso usare if
e for
in list comprehension/espressioni del generatore comeUtilizzando mentre in di lista o generatore di espressioni
list(i for i in range(100) if i*i < 30)
So che questo non è il più efficiente ma recano con me come la condizione potrebbe essere molto più complicato e questo è solo un esempio. Tuttavia, questo va ancora attraverso centinaia di iterazioni e produce solo un valore nella prima 6. Esiste un modo per dire al generatore di espressione dove fermarsi con qualcosa di simile:
list(i for i in range(100) while i*i < 30)
Tuttavia, while
non è intesa nel generatore espressioni. Quindi, la mia domanda è, come faccio a scrivere un'espressione generatore con una condizione di arresto in modo che non continui il calcolo, anche se non produce nuovi valori.
Solo una nota: è possibile generare una lista direttamente usando '[i for i in range (100)]' – Joril
Stranamente, c'era [PEP3142] (https://www.python.org/dev/peps/ pep-3142 /) aperto al momento della domanda. Il caso d'uso dato è quasi esattamente questo. Guido l'ha ammucchiato a maggio 2013 –