2016-11-12 49 views
0
class Diff: 
    def __init__(self, f, h): 
     self.f = f 
     self.h = h 

class Backward1(Diff): 
    def __call__(self, x): 
     f = self.f 
     h = self.h 
     return (f(x)-f(x-h))/h 

from math import sin, pi 
A = Backward1(sin,1E-5) 
print A(pi) 

想要計算幾個h值,如[h = 2 **( - k)for k in range(10)]。如何做到這一點的任何提示?謝謝!如何使用for-loop作爲函數中的參數

回答

0

你不能在分配列表解析變量,但我不認爲你需要:

print([Backward1(sin, 2**(-k))(pi) for k in range(10)]) 

會構建結果不同h s的名單。
或者兩步過程,所以你可以使用不同的args作爲同一組的功能:

fns = [Backward1(sin, 2**(-k)) for k in range(10)] 
print([fn(pi) for fn in fns]) 
print([fn(2*pi) for fn in fns])