I am trying to create a generator that prints the next number on the list. This is a racket version:
  (require racket/generator)
  (define my-gen
    (generator
     (_)
     (for ([x (list 1 2 3))])
       (yield x)))
)
How it should work:
(my-gen) -> 1
(my-gen) -> 2
I also want to be able to use the function directly without having to initialize it at a specific point, so having the generator be the function that actually returns the result, as opposed to something like this:
l = [1, 2, 3]
def myGen():
    for element in l:
        yield element
g = myGen()
print(next(g))
What is the best way to go about this in python?

my_gen = (element for element in l)but this really isn't necessary asmy_gen = iter(l)would be sufficient in your example.