繁体   English   中英

函数生成器Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM