Есть ли в 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

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