2013-04-01 13 views
0
列表中的所有元素

問題:如何定義一個結構緊湊,這個循環:緊湊的方式調用類成員對象

for V in L: 
    V.f() 

其中:

  • L:是一個列表的給定類型的物體A
  • f()A的方法。

例如:

class A: 
    def f(self): 
     print "foobar... " 

# Construct the list 
a1 = A() 
a2 = A() 
a3 = A() 
L = [a1, a2, a3] 

for V in L: 
    V.f() 

我發現這樣做與地圖調用和lambda函數的方式:

map(lambda x: x.f(), L) 

然而,這個調用返回一個列表,我想不建設。

有沒有更好的方法來做到這一點?

+4

'在L V: VF() '看起來是一種簡單易懂的方法 – avasal

+2

你已經有for循環出了什麼問題? – BrenBarn

+0

'[V.f()for V in L]'更合適,但也返回一個結果列表。我可以知道你爲什麼不想返回一個列表嗎?如果你不想要,就忽略它。 –

回答

0

如果你不想要一個列表作爲返回值,那麼你的for循環是最好的方法。

for V in L: 
    V.f() 

或者,您可以使用python的最佳特性之一,列表解析,而不是將其分配給任何變量。列表理解通常更快。

[ V.f() for V in L] 
1

正確的方法做,這是你提到使用循環。任何其他解決方案在語義上都不正確。

(什麼你說的是 「爲了實現L每一個項目,做F。」 也就是說,你是勢在必行for循環說正是。)