Я пытаюсь создать генератор, который печатает следующее число в списке. Это версия ракеток:Создание генератора в python
(require racket/generator)
(define my-gen
(generator
(_)
(for ([x (list 1 2 3))])
(yield x)))
)
Как это должно работать:
(my-gen) -> 1
(my-gen) -> 2
Я также хочу, чтобы иметь возможность использовать функцию непосредственно, без необходимости инициализировать его в определенной точке , так что генератор будет функцией, которая фактически возвращает результат, в противоположность чему-то вроде этого:
l = [1, 2, 3]
def myGen():
for element in l:
yield element
g = myGen()
print(next(g))
Каков наилучший способ сделать это в python?
Что вы подразумеваете, не инициализируя его? Вы могли бы просто использовать выражение генератора - 'my_gen = (элемент для элемента в l)', но это действительно не обязательно, поскольку 'my_gen = iter (l)' будет достаточно в вашем примере. – AChampion
Это именно то, что я имел в виду на самом деле, так как я читаю из определенного файла, и я пытался заставить генератор вернуть следующий элемент в списке на протяжении всей программы. – Lana