2016-12-09 99 views
1

我需要一個類與mmethod接受一個函數作爲參數,適用的功能列表中的每個元素具有將參數應用於任何函數的方法?

class matrix: 
    def __init__(self,xs): 
     self.xs=xs #xs is a list 

    def map(self,function): ??? I don't know how to implent this one 

結果應該是這樣的

v = matrix([1, 2, 3]) 
    r = v.map(sqrt) 
    print(r) 
    matrix [1.0, 1.41, 1.73] 
+0

那麼map()一般有什麼問題?爲什麼你需要編寫自己的定製版本? – MooingRawr

回答

2

,你可以調用函數通常即使作爲參數傳遞。我把它叫做一個列表理解上self.xs

from math import sqrt 

class matrix: 
    def __init__(self,xs): 
     self.xs=xs #xs is a list 

    def map(self,function): 
     return [function(x) for x in self.xs] 

v = matrix([1, 2, 3]) 
r = v.map(sqrt) 
print(r) 

結果:

[1.0, 1.4142135623730951, 1.7320508075688772] 

不mentionning對象和類,請注意,內置map幾乎做了你需要什麼已經,值得你既然mentionning在你的問題猜到名稱:

list(map(sqrt,[1, 2, 3])) 

(需要因爲Python 3轉換爲list,所以它是比列表解析更少使用)

+0

ok @leaf,我想看你在晚上10點30分寫適當的法語:)修正。 –

相關問題