How to get one value at a time from a generator function in Python?

前端 未结 6 1885
鱼传尺愫
鱼传尺愫 2020-12-24 04:08

Very basic question - how to get one value from a generator in Python?

So far I found I can get one by writing gen.next(). I just want to make sure this

相关标签:
6条回答
  • 2020-12-24 04:34

    In python 3 you don't have gen.next(), but you still can use next(gen). A bit bizarre if you ask me but that's how it is.

    0 讨论(0)
  • 2020-12-24 04:45

    To get the value associated with a generator object in python 3 and above use next(<your generator object>). subsequent calls to next() produces successive object values in the queue.

    0 讨论(0)
  • 2020-12-24 04:48

    In Python <= 2.5, use gen.next(). This will work for all Python 2.x versions, but not Python 3.x

    In Python >= 2.6, use next(gen). This is a built in function, and is clearer. It will also work in Python 3.

    Both of these end up calling a specially named function, next(), which can be overridden by subclassing. In Python 3, however, this function has been renamed to __next__(), to be consistent with other special functions.

    0 讨论(0)
  • 2020-12-24 04:48

    This is the correct way to do it.

    You can also use next(gen).

    http://docs.python.org/library/functions.html#next

    0 讨论(0)
  • 2020-12-24 04:50

    Use (for python 3)

    next(generator)
    

    Here is an example

    def fun(x):
        n = 0
        while n < x:
            yield n
            n += 1
    z = fun(10)
    next(z)
    next(z)
    

    should print

    0
    1
    
    0 讨论(0)
  • 2020-12-24 04:51

    Yes, or next(gen) in 2.6+.

    0 讨论(0)
提交回复
热议问题