最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用標準庫fractions模塊讓Python支持分數(shù)類型的方法詳解

 更新時間:2017年08月11日 09:14:21   作者:GanZiQim  
最近在工作中遇到了分數(shù)處理,查找相關(guān)的資料發(fā)現(xiàn)可以利用Fraction類來實現(xiàn),所以下面這篇文章主要給大家介紹了關(guān)于利用標準庫fractions模塊讓Python支持分數(shù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。

前言

你可能不需要經(jīng)常處理分數(shù),但當你需要時,Python的Fraction類會給你很大的幫助。本文將給大家詳細介紹關(guān)于利用標準庫fractions模塊讓Python支持分數(shù)類型的相關(guān)內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

fractions模塊

fractions模塊提供了分數(shù)類型的支持。

Fraction類

該類是fractions模塊的核心,它繼承了numbers.Rational類并且實現(xiàn)了該類所有的方法。

構(gòu)造函數(shù)并不復(fù)雜:

class fractions.Fraction(numerator=0, denominator=1) 
class fractions.Fraction(int|float|str|Decimal|Fraction)

可以同時提供分子(numerator)和分母(denominator)給構(gòu)造函數(shù)用于實例化Fraction類,但兩者必須同時是int類型或者numbers.Rational類型,否則會拋出類型錯誤。當分母為0,初始化的時候會導(dǎo)致拋出異常ZeroDivisionError。

而如果只提供一個參數(shù),則可以用上述五種類型進行初始化。當使用字符串進行初始化時,fractions模塊使用內(nèi)置的正則表達式進行匹配。而使用浮點數(shù)或者Decimal進行初始化時,fractions模塊會在內(nèi)部調(diào)用as_integer_ratio() 。

下面的代碼示例來自官方文檔,展示了各種實例化Fraction的方式:

>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t\n')
Fraction(1414213, 1000000)
>>> Fraction('-.125')
Fraction(-1, 8)
>>> Fraction('7e-6')
Fraction(7, 1000000)
>>> Fraction(2.25)
Fraction(9, 4)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)

限制分母

fractions.Fraction.limit_denominator(max_denominator=1000000)

有時候?qū)⒏↑c數(shù)或者Decimal作為Fraction實例的初始化數(shù)據(jù)可能會遇到舍入誤差的問題,如上面調(diào)用Fraction(1.1)時不返回Fraction(11, 10)的例子。這時Fraction類提供了一個實例方法limit_denominator()用于減小這種誤差。這個方法本來是為了通過限制分母來得到一個近似值,但是在出現(xiàn)舍入誤差的時候反倒使得結(jié)果更加精確了,如下面的例子:

>>> from fractions import Fraction
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> Fraction(1.1).limit_denominator()
Fraction(11, 10)

將Fraction用于算術(shù)運算、關(guān)系運算和其他多種操作

上面提到,F(xiàn)raction類繼承了numbers.Rational類并且實現(xiàn)了該類所有的方法。所以Fraction類事實上通過重載很多特殊函數(shù),使得其實例可以直接用于多種算術(shù)運算。

不僅支持算術(shù)運算,F(xiàn)raction類同時也支持關(guān)系運算、pickle模塊、copy模塊和哈希值的計算。

>>> from fractions import Fraction
>>> x = Fraction(1, 2)
>>> y = Fraction(1, 3)
>>> x + y
Fraction(5, 6)
>>> x - y
Fraction(1, 6)
>>> x * y
Fraction(1, 6)
>>> x / y
Fraction(3, 2)
>>> x ** 2
Fraction(1, 4)
>>> -x
Fraction(-1, 2)
>>> abs(x)
Fraction(1, 2)
>>> round(x)
0
>>> import math
>>> math.floor(x)
0
>>> math.ceil(x)
1
>>> x == y
False
>>> x > y
True

其他函數(shù)

fractions.Fraction.from_float(flt) 
fractions.Fraction.from_decimal(dec)

在Python3.2之前,F(xiàn)raction類不支持通過將浮點數(shù)和Decimal傳入構(gòu)造方法來獲得實例。而是提供了上面兩個類方法,通過調(diào)用類方法的方式來產(chǎn)生實例,目前版本(Python 3.6.1)這兩個類方法仍然存在。

fractions.gcd(a, b)

用于計算最大公約數(shù)。這個函數(shù)在Python3.5之后就廢棄了,官方建議使用math.gcd() 。

總結(jié)

沒啥要總結(jié)的…只能說Python太方便了…對了,這篇博客其實也是個挖了挺久的坑了,之前里面有一部分源碼沒看懂所以一直沒發(fā)上來。哈哈,后面這個標準庫學習的系列還是會一直更下去的!

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

參考資料:

https://docs.python.org/3.6/library/fractions.html

相關(guān)文章

  • 用tensorflow構(gòu)建線性回歸模型的示例代碼

    用tensorflow構(gòu)建線性回歸模型的示例代碼

    本篇文章主要介紹了用tensorflow構(gòu)建線性回歸模型的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Python3 完全平方數(shù)案例

    Python3 完全平方數(shù)案例

    這篇文章主要介紹了Python3 完全平方數(shù)的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • pycharm 2020.2.4 pip install Flask 報錯 Error:Non-zero exit code的問題

    pycharm 2020.2.4 pip install Flask 報錯 Error:Non-zero exit co

    這篇文章主要介紹了pycharm 2020.2.4 pip install Flask 報錯 Error:Non-zero exit code,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Python 變量類型詳解

    Python 變量類型詳解

    變量可以指定不同的數(shù)據(jù)類型,這些變量可以存儲整數(shù),小數(shù)或字符。這篇文章主要介紹了Python 變量類型詳解,需要的朋友可以參考下
    2018-10-10
  • NumPy矩陣乘法的實現(xiàn)

    NumPy矩陣乘法的實現(xiàn)

    本文主要介紹了NumPy矩陣乘法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python異步編程入門之實現(xiàn)文件批處理的并發(fā)處理方式

    Python異步編程入門之實現(xiàn)文件批處理的并發(fā)處理方式

    本文以Python初級程序員為對象,介紹了如何使用asyncio和logging模塊實現(xiàn)一個異步批處理文件的并發(fā)處理系統(tǒng),以提高處理大量文件或數(shù)據(jù)時的效率,其中,通過配置日志系統(tǒng)記錄處理文件的日志信息,定義AsyncBatchProcessor類控制并發(fā)任務(wù)的數(shù)量
    2024-10-10
  • 基于python 微信小程序之獲取已存在模板消息列表

    基于python 微信小程序之獲取已存在模板消息列表

    這篇文章主要介紹了基于python 微信小程序之獲取已存在模板消息列表的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python雙向鏈表原理與實現(xiàn)方法詳解

    python雙向鏈表原理與實現(xiàn)方法詳解

    這篇文章主要介紹了python雙向鏈表原理與實現(xiàn)方法,結(jié)合實例形式分析了Python雙向鏈表的定義、以及節(jié)點的判斷、遍歷、添加、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 如何利用Python快速統(tǒng)計文本的行數(shù)

    如何利用Python快速統(tǒng)計文本的行數(shù)

    這篇文章主要介紹了如何利用Python快速統(tǒng)計文本的行數(shù),要快速統(tǒng)計一個文本文件中的行數(shù),其實就是要統(tǒng)計這個文本文件中換行符的個數(shù),下面我們就一起進入文章看看具體的操作過程吧
    2021-12-12
  • Python中的內(nèi)置函數(shù)isdigit()

    Python中的內(nèi)置函數(shù)isdigit()

    這篇文章主要介紹了Python中的內(nèi)置函數(shù)isdigit(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

左云县| 蕉岭县| 托克托县| 富阳市| 赤水市| 水富县| 阿巴嘎旗| 河津市| 乌拉特中旗| 东宁县| 嘉义县| 乌恰县| 克拉玛依市| 新河县| 沧州市| 淳化县| 广州市| 青冈县| 民丰县| 信阳市| 寿阳县| 临武县| 庆安县| 叙永县| 吴江市| 惠水县| 阳谷县| 青河县| 南乐县| 堆龙德庆县| 泸定县| 崇文区| 永州市| 红河县| 潞西市| 天镇县| 闵行区| 娄底市| 历史| 瓮安县| 织金县|