[英]Function generators Python
我试图实现一个要使用n次的函数生成器。 我的想法是创建一个生成器对象,然后将该对象分配给另一个变量,然后将重新分配的变量作为函数调用,例如:
def generator:
[...]
yield ...
for x in xrange(10):
function = generator
print function(50)
当我调用打印函数时,发现没有调用function(50)
。 相反,输出为: <generator object...>
。 我试图通过将其分配给一个生成器函数,然后将此新变量用作生成器函数来使用10次。
我该如何纠正?
生成器函数返回生成器对象。 您需要执行list(gen)
才能将它们转换为list
或者只是遍历它们。
>>> def testFunc(num):
for i in range(10, num):
yield i
>>> testFunc(15)
<generator object testFunc at 0x02A18170>
>>> list(testFunc(15))
[10, 11, 12, 13, 14]
>>> for elem in testFunc(15):
print elem
10
11
12
13
14
这个问题对此有更多解释: Python yield关键字已解释
您还可以使用生成器表达式创建生成器对象:
>>> (i for i in range(10, 15))
<generator object <genexpr> at 0x0258AF80>
>>> list(i for i in range(10, 15))
[10, 11, 12, 13, 14]
>>> n, m = 10, 15
>>> print ('{}\n'*(m-n)).format(*(i for i in range(n, m)))
10
11
12
13
14
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.