2016-06-10 9 views
-3

Ich bin ein Python-Neuling. Ich versuche, dieses Code-Snippet auszuführen, um eine Liste von Bereichswerten unter Verwendung des Generatorausdrucks zu erstellen, um das zweite Argument numpy.histogram zu verwenden ('a' und 'b' sind nicht negative ganze Zahlen).Wie verwende ich einen Python-Generator-Ausdruck als Rückgabewert einer Funktion?

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

aber ich bekomme einen Typfehler:

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 

Ich habe gesucht Fragen und Antworten und viele Details zu Python-Generatoren lesen, aber ich kann nicht herausfinden, was das Problem ist.

Antwort

-2

ein Generator Ausdruck würde yield verwenden.

Wenn ich Ihren Code verwenden (mit range statt xrange), das funktioniert:

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)