回答
math.fabs()
將其參數轉換爲float(如果可以的話)(如果不能,則會引發異常)。然後它取絕對值,並將結果作爲浮點數返回。
除了漂浮物,abs()
也可以使用整數和複數。它的返回類型取決於它的參數的類型。
In [7]: type(abs(-2))
Out[7]: int
In [8]: type(abs(-2.0))
Out[8]: float
In [9]: type(abs(3+4j))
Out[9]: float
In [10]: type(math.fabs(-2))
Out[10]: float
In [11]: type(math.fabs(-2.0))
Out[11]: float
In [12]: type(math.fabs(3+4j))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/alexei/<ipython-input-12-8368761369da> in <module>()
----> 1 type(math.fabs(3+4j))
TypeError: can't convert complex to float
編輯:作爲@aix建議,更好(更公平)的方式來比較的速度差:
In [1]: %timeit abs(5)
10000000 loops, best of 3: 86.5 ns per loop
In [2]: from math import fabs
In [3]: %timeit fabs(5)
10000000 loops, best of 3: 115 ns per loop
In [4]: %timeit abs(-5)
10000000 loops, best of 3: 88.3 ns per loop
In [5]: %timeit fabs(-5)
10000000 loops, best of 3: 114 ns per loop
In [6]: %timeit abs(5.0)
10000000 loops, best of 3: 92.5 ns per loop
In [7]: %timeit fabs(5.0)
10000000 loops, best of 3: 93.2 ns per loop
In [8]: %timeit abs(-5.0)
10000000 loops, best of 3: 91.8 ns per loop
In [9]: %timeit fabs(-5.0)
10000000 loops, best of 3: 91 ns per loop
如此看來abs()
只有在fabs()
的整數輕微的速度優勢。對於浮標,abs()
和fabs()
表現出相似的速度。
除了什麼@aix說,多一個要考慮的就是速度差:
In [1]: %timeit abs(-5)
10000000 loops, best of 3: 102 ns per loop
In [2]: import math
In [3]: %timeit math.fabs(-5)
10000000 loops, best of 3: 194 ns per loop
所以abs()
比math.fabs()
更快。
你沒有比較蘋果和蘋果。確實使用'從數學進口工廠',並嘗試'-5.0'。 – agf
@agf感謝您指出!那真是愚蠢。 –
也不可靠的時間結果?你首先在102ns有abs(-5),然後再顯示爲88.3ns。決不要從任何基準的單次運行中得出結論,即使它在內部儘量避免這些問題。 –
abs()
: 根據參數返回絕對值,即如果參數是int,則返回int,如果參數爲float,則返回float。 而且它適用於複雜的變量也即abs(a+bj)
也適用,並返回絕對值即 「math.sqrt(((A)** 2)+((B)** 2)」
math.abs()
: 它只能在整數或浮點值上總是返回絕對浮點值
- 1. 用C++替換晶圓廠
- 2. 在Python中使用與晶圓廠的子進程
- 3. C晶圓廠返回整數
- 4. 晶圓廠()不會在模塊
- 5. 如何面料(Python編寫)包使其CLI工具晶圓廠
- 6. 的Android - 華爲設備上奇怪的晶圓廠海拔
- 7. 調用每個晶圓廠調用的任務/函數
- 8. Android的晶圓廠圖標找不到類「android.graphics.drawable.RippleDrawable」
- 9. 雙晶圓廠=的通用變種(FA,FB)
- 10. 晶圓廠棒棒糖顯示上長按奇怪的影子
- 11. 晶圓廠按鈕設計與矢量資產錯誤
- 12. 爲什麼使用晶圓廠()而不是鑄造?
- 13. 活動在Android 4.4 kitkat上不顯示晶圓廠圖標
- 14. android:僅在第一個標籤上顯示晶圓廠圖標
- 15. 在其他標籤上隱藏晶圓廠
- 16. 離子晶圓廠名單公開,關閉事件
- 17. 25.1.0 Android支持庫正在破壞晶圓廠行爲
- 18. 隱藏/顯示晶圓廠與規模動畫
- 19. 比較在C++中的效率? (abs(X)> 1 vs abs(x)!= 0)
- 20. 橢圓vs圓
- 21. 數組的Python ValueError abs
- 22. 無法將我的晶圓廠圖標設置到我的頁面右下方
- 23. 如何在點擊屏幕上的任何位置時隱藏晶圓廠?
- 24. 將調色板顏色應用到按下狀態的晶圓廠
- 25. 如何更改主要活動中晶圓廠的色調和背景色調?
- 26. 如何創建一個像DU Speed Booster一樣的晶圓廠繼續運行?
- 27. singleton vs工廠?
- 28. 減法和晶圓廠工作,然後不作爲程序運行
- 29. 添加背景色到晶圓廠按鈕,所以對比度更好
- 30. ABS(A)和abs(int)
'abs'的作用遠不止是整數和浮點數,結果類型是__not__總是與參數相同,例如'abs(3 + 4j)'。 – agf
在關於'fabs'的評論中增加了一個更長的時間,因爲它總是處於浮動狀態並且你有正確的答案! –
@agf:謝謝你提醒我複雜的數字。的興趣,其他類別的東西可以'__builtin __。ab s()'成功應用於? – NPE