如何使用python生成器表达式作为函数返回值?

时间:2016-06-10 09:06:51

标签: python generator

我是一个蟒蛇新手。我试图运行此代码片段使用生成器表达式列出范围值,以便用作numpy.histogram第二个参数('a'和'b'是非负整数)。

return ([b] + [(b - a) / 2.0 ** k for k in xrange(1, n)] + [a])[::-1]

但是我收到了类型错误:

Traceback (most recent call last):
File "Untitled Document 1.py", line 25, in <module>
create_bins(a = 0, b = 10)
File "Untitled Document 1.py", line 19, in creat_bins
return ((b) + ((b - a) / 2.0 ** k for k in xrange(1, n)) + (a))[::-1]
TypeError: an integer is required

我搜索了问题和答案,并阅读了许多有关python发生器的详细信息,但我无法找出问题所在。

1 个答案:

答案 0 :(得分:-2)

生成器表达式将使用yield

如果我使用您的代码(使用range代替xrange),则可以使用:

def test(a,b,n):
  yield ([b] + [(b - a) / 2.0 ** k for k in range(1, n)] + [a])[::-1]

for i in test(1,2,3):
    print(i)