Чтобы получить по одному значению из функции-генератора в Python, вы можете использовать следующие методы:
- Использование функции
next()
. Функцияnext()
позволяет получить следующее значение из генератора. Каждый раз, когда вы вызываетеnext()
в генераторе, он переходит к следующему значению в последовательности. Если значений больше нет, возникает исключениеStopIteration
.
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
value = next(gen)
print(value) # Output: 1
- Использование цикла
for
. Вы можете перебирать генератор, используя циклfor
. Цикл будет автоматически вызыватьnext()
в генераторе, пока не останется значений.
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
for value in gen:
print(value) # Output: 1, 2, 3
- Преобразование генератора в список. Если вы хотите получить все значения одновременно, вы можете преобразовать генератор в список с помощью функции
list()
. При этом будут использованы все значения из генератора и сохранены в списке.
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
values = list(gen)
print(values) # Output: [1, 2, 3]
- Использование оператора
yield from
. Если у вас есть генератор, который возвращает значения из другого генератора, вы можете использовать операторyield from
, чтобы делегировать итерацию внутреннему генератору..
def inner_generator():
yield 'a'
yield 'b'
yield 'c'
def outer_generator():
yield from inner_generator()
gen = outer_generator()
for value in gen:
print(value) # Output: a, b, c