2024-10-02 22:27:11 发布
网友
我尝试使用内置的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。如果您看一下its documentation,您可以看到它正按照文档所说的做:您将next应用于生成器,它返回了一个对象,然后您将该对象绑定到一个名为myGenerator(它可能是您的,但它不是生成器)。每次调用它时,它的计算结果都是一个简单的对象。在
next
myGenerator
如果您不知道如何使用next,我建议您使用yield:
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可以执行相同的功能。在
这有点好,因为你实际上有你想要的发电机
但是你在上面运行
^{pr2}$next
。如果您看一下its documentation,您可以看到它正按照文档所说的做:您将next
应用于生成器,它返回了一个对象,然后您将该对象绑定到一个名为myGenerator
(它可能是您的,但它不是生成器)。每次调用它时,它的计算结果都是一个简单的对象。在如果您不知道如何使用
next
,我建议您使用yield
:演示:
^{pr2}$yield
可以执行相同的功能。在相关问题 更多 >
编程相关推荐