Задать вопрос

Зачем нужны бесконечные массивы 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 # так можно, но зачем?
  • Вопрос задан
  • 1157 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 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) - это полная бочка (воды).
А генератор - это труба, из которой вода течет.
Бочка не всегда заменит трубу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
AST Москва
До 350 000 ₽
18 янв. 2025, в 07:20
50000 руб./за проект
18 янв. 2025, в 03:12
1000 руб./за проект
18 янв. 2025, в 00:01
500 руб./за проект