2016-06-10 65 views
-3

我是一名蟒蛇新手。我想運行這段代碼片段來使用生成器表達式來創建一個範圍值列表,以便用作numpy.histogram第二個參數('a'和'b'是非負整數)。如何使用python生成器表達式作爲函數的返回值?

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生成器的細節,但我無法找出問題是什麼。

回答

-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) 
相關問題