Я могу использовать 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
не понимается в выражениях генератора. Итак, мой вопрос: как мне написать выражение генератора с условием остановки, чтобы оно не продолжало вычисление, даже если оно не дает новых значений.