Есть ли в Python 3 концепция, которая интегрируется с оператором while, как итератор с оператором for?Python

Программы на Python
Ответить
Anonymous
 Есть ли в Python 3 концепция, которая интегрируется с оператором while, как итератор с оператором for?

Сообщение Anonymous »

Я ищу способ реализовать общий алгоритмический шаблон

Код: Выделить всё

prev_length = -1
while len(my_list) != prev_length:
prev_length = len(my_list)
# algorithmic code goes here
в следующей форме, которая читается как простой английский

Код: Выделить всё

while length_changed(my_list):
# algorithmic code goes here
Я смог зайти только так далеко:

Код: Выделить всё

tracker = LengthTracker(my_list)
while tracker.changed():
# algorithmic code goes here
Чтобы сосредоточиться на самом вопросе, я избавлю вас от чтения реализации класса LongTracker, потому что этот код на стороне клиента уже показывает, почему мне не нравится этот подход: существует дополнительная инициализация объекта трекера, плюс она загрязняет мой код, поскольку объект без необходимости продолжает существовать после завершения цикла.
Думаю, поскольку мне нужна автоматическая инициализация, я мог бы искать концепцию, которая структурно связана с while Ключевое слово точно так же, как концепция итератор связана с ключевым словом for. Например, когда вы делаете for x в range(10), тогда range обрабатывает как инициализацию перед циклом, так и шаг итерации, следовательно, вы можете создать его на лету внутри оператора for.
Но предыдущий абзац является просто умозрительным, а подход к объекту трекера - это всего лишь пример неудачной попытки. Я хочу достичь указанной выше формы, пока length_changed(mylist), для чего я с радостью приму любое решение.
Спасибо за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... nt-like-an
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»