Python中的生成器只返回第一个elemen

2024-10-02 22:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 函数代码in元素for顺序内置next
2条回答

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

(t for t in [1,2,3,4])

但是你在上面运行next。如果您看一下its documentation,您可以看到它正按照文档所说的做:您将next应用于生成器,它返回了一个对象,然后您将该对象绑定到一个名为myGenerator(它可能是您的,但它不是生成器)。每次调用它时,它的计算结果都是一个简单的对象。在

^{pr2}$

如果您不知道如何使用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

演示:

^{pr2}$

yield可以执行相同的功能。在

相关问题 更多 >