Python3 CookBook | 數字處理

文章首發於知乎專欄,歡迎關注。python

zhuanlan.zhihu.com/pythoncookb…數組

如下測試代碼所有基於 Python3。bash

數字處理通常來講都比較簡單,這篇文章主要介紹幾個常見問題和經常使用函數。dom

取整和四捨五入

使用 int() 函數取整會直接丟棄小數位,不進行四捨五入。函數

In [4]: int(1.63)
Out[4]: 1

複製代碼

round() 函數會根據所帶參數肯定保留的小數位數,而後輸出四捨五入後的結果。性能

In [6]: round(1.63)
Out[6]: 2

In [7]: round(1.63, 1)
Out[7]: 1.6

複製代碼

精確的浮點數運算

浮點數計算最讓我頭疼的就是它的小偏差,這種偏差並非每一次都會出現,有的時候想在頁面上展現一個計算結果,忽然發現這個結果變成了一大長串數字,而後還要修改代碼,將這串數字格式化。測試

In [8]: a = 1.1

In [9]: b = 1.2

In [10]: a + b
Out[10]: 2.3

In [11]: a = 4.2

In [12]: b = 2.1

In [13]: a + b
Out[13]: 6.300000000000001

複製代碼

若是想要避免這種狀況可使用 Decimal() 來進行精確計算,但這樣的問題是會有一些性能上的損耗。spa

In [14]: from decimal import Decimal

In [15]: a = Decimal(2.1)

In [16]: b = Decimal(4.2)

In [17]: a + b
Out[17]: Decimal('6.300000000000000266453525910')

In [18]: a = Decimal('2.1')

In [19]: b = Decimal('4.2')

In [20]: a + b
Out[20]: Decimal('6.3')

複製代碼

須要注意的是,傳入的參數須要是字符串,有點奇怪。code

隨機數

用 random 來生成隨機數,該模塊還提供了不少 function,特別有用。對象

產生[0,1)之間的隨機數。

random.random()

產生[min, max)之間的隨機整數。 random.randint(min, max)

從可迭代對象中隨機選取一個元素返回。

random.choice(iterable)

從可迭代對象中隨機選取不重複的 k 個元素,以數組的形式進行返回。

random.sample(iterable, k)

在[start, stop)中以步長 step 進行步進,隨機產生一個元素。

random.randrange(start, stop, step)

對序列進行原地隨機打亂順序,返回 None,必定要注意這是原地起做用的。

random.shuffle(l)

這裏就不作具體演示了。

關於數字還有不少其餘操做,好比格式化輸出,二八十六進制整數的轉換,複數運算等等,但都不是很複雜,有的可能也不常遇到。

未完待續。。。

相關文章
相關標籤/搜索