2011-08-01 68 views
1

是否有任何簡寫方法在同一行中定義同一類的多個對象。 (我不是在談論列表或對象數組)..在python中定義同一類的多個對象

我的意思是這樣

p1,p2,p3 = Point() 

有什麼建議?

+0

會是什麼意思?你能否提供一些你認爲應該做的解釋? –

回答

1

想想地圖也是可以接受的位置:

p1, p2, p3 = map(lambda x: Point(), xrange(3)) 

但發電機表達似乎有點快:

p1, p2, p3 = (Point() for x in xrange(3)) 
+0

這是一個生成器的理解,而不是列表理解。 – JAB

+0

@JAB:這是[generator ** expression **](http://docs.python.org/reference/expressions.html#generator-expressions),而不是生成器理解 – SingleNegationElimination

+0

@TokenMacGuy:考慮文檔中其他地方的語法用法,「發電商理解」可以簡單地理解爲「理解爲一個發電機」而不是「作爲一個列表」或「作爲一個字典」。畢竟,大多數人稱之爲「列表解析」實際上是「列表顯示內包含的(列表)解析」,如您提供的鏈接所示。 – JAB

3

不是。

p1, p2, p3 = [Point() for x in range(3)] 
2

你究竟想達到什麼目的?

此代碼你問什麼,但我不知道這是否是您的最終目標:

p1, p2, p3 = [Point() for _ in range(3)] 
+0

雅做到了:-) – Rushil

6

它可能會稍微更有效地使用發電機的理解,而不是一個列表理解:

p1, p2, p3 = (Point() for _ in range(3)) # use xrange() in versions of Python where range() does not return an iterator for more efficiency 

還有的

p1, p2, p3 = Point(), Point(), Point() 

簡單的解決方案,它採用ADVA隱式元組打包和解包。

+0

雅這正是我想要的..thnx – Rushil

相關問題