Я могу использовать if
и for
в выражениях выражений/генераторов списков как
list(i for i in range(100) if i*i < 30)
Я знаю, что это не самый эффективный, но нести меня, поскольку условие может быть намного сложнее, и это просто пример. Тем не менее, это все еще проходит через сотни итераций и дает только значение в первом 6. Есть ли способ сообщить генераторному выражению, где остановиться с чем-то вроде этого:
list(i for i in range(100) while i*i < 30)
Однако while
не понимается в выражениях генератора. Итак, мой вопрос: как написать выражение генератора с условием остановки, чтобы он не продолжал вычисление, даже если он не дает новых значений.