- Нет.
Смотрите, здесь нет списка:
def one():
while True:
yield 1
Index и
next()
- два независимых инструмента для выполнения итерации.Опять же, если у вас есть объект такой, что его итератор
next()
всегда возвращает 1, вам не нужны никакие индексы.
Более подробно ...
Смотрите, технически, вы всегда можете связать список и индекс с любым генератором или итератором: просто запишите все его возвращаемые значения - вы получите не более чем счетный набор значений a₀, a₁, ... Но это всего лишь математический формализм совершенно излишнеиметь что-то общее с тем, как работает настоящий генератор.Например, у вас есть генератор, который всегда дает один.Вы можете посчитать, сколько из них вы уже получили, и назвать это индексом.Вы можете записать все эти, разделенные запятыми, и назвать это списком.Правильно ли описывают эти два объекта выход вашего истекшего генератора?Видимо так.Они хоть немного важны для самого генератора?Не совсем.
Конечно, реальный генератор, вероятно, будет иметь состояние (вы можете назвать его индексом - при условии, что вы не обязательно называете что-то индексом, если это только неотрицательный интегральный скаляр; выможет записывать все свои состояния при условии, что он работает детерминистически, нумерует их и вызывает индекс номера текущего состояния - да, примерно так).У них всегда будет источник их состояний и возвращаемых значений.Таким образом, индексы и списки можно рассматривать как абстракции , которые описывают поведение объекта.Но совершенно необязательно, что это конкретные детали реализации, которые действительно используются.
Рассмотрим небуферизованную программу чтения файлов.Он извлекает с диска один байт и немедленно возвращает его.В памяти нет реального списка, только содержимое файла на диске (может даже и не быть, если наше устройство чтения файлов подключено к сетевому сокету вместо реального дисковода, а Oracle Delphi находится на другом конце соединения),Вы можете вызывать индекс положения файла - пока вы не прочитаете стандартный ввод, который является только обращаемым вперед и, таким образом, индексирование не имеет реального физического смысла - то же самое касается сетевых подключений по ненадежному протоколу, BTW.
Примерно так.