Проблема довольно проста, у меня есть метод, который возвращает список.
Я хочу перебрать каждый элемент в этом списке, и когда закончите,
вызовите метод, чтобы получить новый список, и повторите.
На данный момент мой код выглядит примерно так:
generator = iter([])
while Condition:
try:
item = next(generator)
except StopIteration:
generator = iter(list_returining_method())
item = next(generator)
...
Однако ранее я использовал вложенный цикл for
.
while Condition:
for item in list_returining_method():
...
Хотя моя предыдущая попытка выглядит в некоторых отношениях лучше, но мой нынешний метод имеет некоторые "преимущества":
- Если для условия задано значение false, цикл завершается без необходимости
break
из цикла for.
- расширение вышеуказанных причин, методы с доступом к Condition могут завершить цикл без , перебирая все остальные элементы в указанном списке или осуществляя специальную проверку в цикле for.
- Первый подход позволяет пропустить элементы в цикле, если возникнет такая необходимость.
- Существует также еще один уровень отступа. Это больше тщеславия, чем что-либо еще, но, учитывая, что реальный код был частью метода класса, уровень отступа уже был довольно высок.
По меньшей мере, я запутался относительно того, что более уместно. Кажется, что у них обоих есть уникальные преимущества и недостатки, поэтому, если кто-нибудь знает наиболее правильный и питонический подход, я буду очень признателен.