我正在尝试使用内置的next()函数在python 3.4中创建一个生成器。这是我目前的代码:
myGenerator = next(t for t in [1,2,3,4])
myGenerator
1
myGenerator
1.....
每当我调用我构建的生成器时,每次调用它时它只返回1,这很奇怪,因为我认为生成器中的每个元素只能迭代一次。如何修复此代码,以便按顺序打印出1,2,3,4?谢谢你的帮助。
答案 0 :(得分:2)
它有点不错,因为你实际上有你想要的发生器,这是
(t for t in [1,2,3,4])
然后你就可以运行next
了。如果您查看its documentation,您可以看到它正在完全按照文档所说的做法:您将next
应用于生成器,它返回了一个对象,并将此对象绑定到您调用的内容myGenerator
(它可能是你的,但它不是发电机)。每次调用它时,它都会计算为一个简单的对象。
>>> myGenerator = (t for t in [1,2,3,4])
>>> print next(myGenerator)
1
>>> print next(myGenerator)
2
答案 1 :(得分:0)
如果您不知道如何使用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
演示:
1
2
3
4
yield
可以执行相同的功能。