Sobes.tech
Back to questions
Junior — Middle
79

Как получить доступ к элементу по его позиции в генераторе в Python?

Companies where asked
ArendadataArendadata
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

Генераторы в Python не поддерживают прямой доступ по индексу, так как они создают элементы по одному и не хранят их в памяти. Чтобы получить элемент по позиции, можно:

  1. Использовать функцию itertools.islice для пропуска первых N элементов:
import itertools

def get_element_at(gen, index):
    return next(itertools.islice(gen, index, index+1))

# пример
gen = (x*x for x in range(10))
print(get_element_at(gen, 3))  # выведет 9
  1. Преобразовать генератор в список (если это возможно по памяти):
gen = (x*x for x in range(10))
lst = list(gen)
print(lst[3])  # 9

Первый способ более эффективен при работе с большими или бесконечными генераторами.