Python中的生成器仅返回第一个元素

Python中的生成器仅返回第一个元素,python,generator,Python,Generator,我正在尝试使用内置的next()函数在Python3.4中创建一个生成器。这是我目前的代码: myGenerator = next(t for t in [1,2,3,4]) myGenerator 1 myGenerator 1..... 每当我调用我构建的生成器时,每次调用它时它只返回1,这很奇怪,因为我认为生成器中的每个元素只能迭代一次。如何修复此代码,使其按该顺序打印出1,2,3,4?谢谢你的帮助。这有点好,因为你实际上有你想要的发电机,它是 (t for t in [1,2,3,4]

我正在尝试使用内置的next()函数在Python3.4中创建一个生成器。这是我目前的代码:

myGenerator = next(t for t in [1,2,3,4])
myGenerator
1
myGenerator
1.....

每当我调用我构建的生成器时,每次调用它时它只返回1,这很奇怪,因为我认为生成器中的每个元素只能迭代一次。如何修复此代码,使其按该顺序打印出1,2,3,4?谢谢你的帮助。

这有点好,因为你实际上有你想要的发电机,它是

(t for t in [1,2,3,4])
然后在上面运行
next
。如果你看一下,你会发现它正按照文档所说的做:你将
next
应用到生成器,它返回了一个对象,你将这个对象绑定到一个你称之为
myGenerator
的东西上(它可能是你的,但不是生成器)。每次调用它时,它的计算结果都是一个简单的对象

>>> myGenerator = (t for t in [1,2,3,4])
>>> print next(myGenerator)
1
>>> print next(myGenerator)
2

如果您不知道如何使用
next
,我建议您使用
yield

def g(l):
    for i,x in enumerate(l):
        yield x
        if i == len(l):
            break

for i in g([1,2,3,4]):
    print i
演示:


yield
可以实现同样的功能。

下一步
不是如何构建生成器,而是如何从中检索元素。。。您的代码实际上是
myGenerator=1
1
2
3
4