欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用標準庫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ù)并不復雜:

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,初始化的時候會導致拋出異常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)文章

  • Python寫一個簡單的在線編輯器

    Python寫一個簡單的在線編輯器

    這篇文章主要介紹了如何利用Python寫一個簡單的在線編輯器,主要通過pywebio程序,實現(xiàn)了Python的簡陋在線編輯器,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • Python內(nèi)置函數(shù)OCT詳解

    Python內(nèi)置函數(shù)OCT詳解

    本文給大家介紹的是python中的內(nèi)置函數(shù)oct(),其主要作用是將十進制數(shù)轉(zhuǎn)換成八進制,再變成字符。有需要的小伙伴可以參考下
    2016-11-11
  • Python六大開源框架對比

    Python六大開源框架對比

    在這篇文章里,我們將為Python Web開發(fā)者回顧基于Python的6大Web應用框架。無論你是出于愛好還是需求,這六大框架都可能會成為你工作上不錯的得力助手。
    2015-10-10
  • Python3 列表list合并的4種方法

    Python3 列表list合并的4種方法

    這篇文章主要介紹了Python3 列表list合并的4種方法,需要的朋友可以參考下
    2021-04-04
  • 一文詳解Python中多進程和進程池的使用方法

    一文詳解Python中多進程和進程池的使用方法

    這篇文章將介紹Python中多進程和進程池的使用方法,并提供一些實用的案例供大家參考,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)在字典中將鍵映射到多個值上的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)在字典中將鍵映射到多個值上的方法

    這篇文章主要介紹了Python在字典中將鍵映射到多個值上的方法,涉及Python針對字典的相關(guān)映射與初始化相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python模擬鍵盤輸入自動登錄TGP

    Python模擬鍵盤輸入自動登錄TGP

    這篇文章主要介紹了Python模擬鍵盤輸入自動登錄TGP的示例代碼,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-11-11
  • Django+Vue實現(xiàn)文件上傳下載的項目實踐

    Django+Vue實現(xiàn)文件上傳下載的項目實踐

    本文主要介紹了Django+Vue實現(xiàn)文件上傳下載的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Python報錯error: subprocess-exited-with-error解決辦法

    Python報錯error: subprocess-exited-with-error解決辦法

    在Python開發(fā)中,遇到subprocess-exited-with-error通常是由依賴缺失、權(quán)限問題、環(huán)境配置錯誤或兼容性問題導致,修復方法包括安裝依賴、使用虛擬環(huán)境、提升權(quán)限、檢查路徑和命令,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Python pyecharts模塊安裝與入門教程

    Python pyecharts模塊安裝與入門教程

    Echarts 是一個由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發(fā)者的認可,這篇文章主要介紹了Python pyecharts數(shù)據(jù)可視化模塊安裝與入門教程,需要的朋友可以參考下
    2022-09-09

最新評論