Зачем нужны бесконечные массивы Python?

Не очень понимаю смысл бесконечных массивов в Python. Ладно бы можно было просто обратиться к конкретному элементу, и он бы вычислялся, и результат автоматически кэшировался и все такое. Так нет ведь, нужно перебирать элементы циклом for-in. Непонятно, есть ли от этого какой-то профит по сравнению с функцией, возвращающей нужный элемент вместо бесконечного массива?
def factorial():
    i = 1
    k = 1
    while True:
        yield k
        k = k * i
        i += 1

factorial()[5] # так нельзя

for i in factorial():
    ...
    if ...: break # так можно, но зачем?
  • Вопрос задан
  • 1150 просмотров
Решения вопроса 2
kivsiak
@kivsiak
software engineer
Это не массив, это генератор. Схожесть его с массивом только то что и то и другое итерируемое.

Зачем нужны генераторы отлично на примерах объяснено тут www.diveintopython3.net/generators.html
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
>>> from itertools import islice
>>> s = islice(xrange(100), 27, 40, 3)
>>> s
<itertools.islice object at 0x02618060>
>>> list(s)
[27, 30, 33, 36, 39]

И ещё почитайте про memoization, а также пару ссылок ниже:
https://github.com/brennerm/PyTricks/blob/master/c...
https://github.com/brennerm/PyTricks/blob/master/m...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bobrovskyserg
@bobrovskyserg
Массив (list) - это полная бочка (воды).
А генератор - это труба, из которой вода течет.
Бочка не всегда заменит трубу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы