我在我的程序中使用xyz向量很多。我使用它們足夠讓每個變量(如offset_x,offset_y等)變得單調乏味和雜亂無章。現在,我可以將每個x,y和一組集合(例如offset =(x,y,z)),但是我發現在任何地方使用offset [0]這樣的東西都會使代碼不夠可讀如我所願,使用字典似乎效率太低。 Numpy是另一種選擇,很多人都提出過這個建議,但根據Poor numpy.cross() performance的信息,Nunpy可能不太適合我正在處理的短陣列,而且我沒有太多的空白腳本變慢,因爲一些片段每秒運行幾次。那裏有什麼東西既有效又可讀?可讀性和效率,哪個更好? Numpy,tuple等?
1
A
回答
2
如果您正在尋找更具可讀性的元組,請查看namedtuple。要點是文檔中給出的示例。
Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(11, y=22) # instantiate with positional or keyword arguments
>>> p[0] + p[1] # indexable like the plain tuple (11, 22)
33
>>> x, y = p # unpack like a regular tuple
>>> x, y
(11, 22)
>>> p.x + p.y # fields also accessible by name
33
>>> p # readable __repr__ with a name=value style
Point(x=11, y=22)
如果您對效率感興趣,請檢查implementation。它使用__slots__
,它使用exec
進行彙編,所以它應該比常規元組開銷少。
,因爲它是在Python編寫的,你可以切出一些的可能是不必要的方法,如__repr__
,_asdict
,_replace
,並且__getnewargs__
甚至更減少佔地面積。
相關問題
- 1. 查詢效率 - 哪個性能更好?
- 2. 在可讀性方面哪個更好?
- 3. C內在效率 - 哪個更好?
- 4. MySQL等效的mysql_num_rows。哪個更好?
- 5. SQL效率 - 哪個更快?
- 6. 運行for循環時哪個更好/效率更高的coffeescript?
- 7. strtotime和「更好的可讀性」
- 8. Android - 哪種效率更高?
- 9. URLConnection或HTTPClient:哪個提供更好的功能和更高的效率?
- 10. SQL Server和Oracle,哪一個在可伸縮性方面更好?
- 11. UI:哪一個更好菜單層次更好可用性
- 12. XPath性能 - 哪個更好?
- 13. 哪裏可以找到一些Numpy方法的效率O(n)?
- 14. 哪個使用Linq Any()更有效率?
- 15. 哪個工會更有效率:List/HashSet
- 16. 哪個效率更高 - $('selector')。last()或$('selector:last')?
- 17. 哪個更有效率?爲什麼?
- 18. 哪一個更有記憶效率?
- 19. setTimeout和setInterval哪個更好?
- 20. @HostListener和Renderer.listen哪個更好?
- 21. 哪個查詢是更好和更有效 - mysql的
- 22. 哪一個是線性和二進制搜索的效率
- 23. 哪個更有效率,哪個手機 - 紋理尺寸
- 24. 。 ReadLine()與Read ByteArray讀取哪個更好?
- 25. 哪個更好?碳還是可可? (Mac)
- 26. 哪個更好
- 27. 哪個更好?
- 28. 哪個更好?
- 29. 哪種性能更好?和VS AndAlso
- 30. 哪個更好的listview在Android中的可用性?
我猜這是一個元組類型的包裝?它會產生多少開銷? – Varriount
看我的編輯。基本上,最小。 – agf
至於速度?我閱讀了Namedtuple,查看了這兩個文檔以及http://pysnippet.blogspot.com/2010/01/named-tuple.html,並在評論部分中,一個人聲明使用Namedtuple爲2-3倍慢。抱歉燒烤你,但我的一個特別重要的部分每秒運行幾次,我沒有太多的擺動空間,性能明智。除此之外,這看起來像是一個很好的解決方案 – Varriount