国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python標(biāo)準(zhǔn)庫---10、內(nèi)置類型:數(shù)字類型

NotFound / 1683人閱讀

摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型邏輯值檢測布爾運(yùn)算比較下一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型迭代器類型序列類型數(shù)字類型存在三種不同的數(shù)字類型整數(shù)浮點(diǎn)數(shù)和復(fù)數(shù)。標(biāo)準(zhǔn)庫包含附加的數(shù)字類型,如表示有理數(shù)的以及以用戶定制精度表示浮點(diǎn)數(shù)的。

上一篇文章:Python標(biāo)準(zhǔn)庫---9、內(nèi)置類型:邏輯值檢測、布爾運(yùn)算、比較
下一篇文章:Python標(biāo)準(zhǔn)庫---11、內(nèi)置類型:迭代器類型、序列類型
數(shù)字類型 --- int, float, complex

存在三種不同的數(shù)字類型: 整數(shù), 浮點(diǎn)數(shù) 和 復(fù)數(shù)。 此外,布爾值屬于整數(shù)的子類型。 整數(shù)具有無限的精度。 浮點(diǎn)數(shù)通常使用 C 中的 double 來實(shí)現(xiàn);有關(guān)你的程序運(yùn)行所在機(jī)器上浮點(diǎn)數(shù)的精度和內(nèi)部表示法可在 sys.float_info 中查看。 復(fù)數(shù)包含實(shí)部和虛部,分別以一個浮點(diǎn)數(shù)表示。 要從一個復(fù)數(shù) z 中提取這兩個部分,可使用 z.real 和 z.imag。 (標(biāo)準(zhǔn)庫包含附加的數(shù)字類型,如表示有理數(shù)的 fractions 以及以用戶定制精度表示浮點(diǎn)數(shù)的 decimal。)

數(shù)字是由數(shù)字字面值或內(nèi)置函數(shù)與運(yùn)算符的結(jié)果來創(chuàng)建的。 不帶修飾的整數(shù)字面值(包括十六進(jìn)制、八進(jìn)制和二進(jìn)制數(shù))會生成整數(shù)。 包含小數(shù)點(diǎn)或冪運(yùn)算符的數(shù)字字面值會生成浮點(diǎn)數(shù)。 在數(shù)字字面值末尾加上 "j" 或 "J" 會生成虛數(shù)(實(shí)部為零的復(fù)數(shù)),你可以將其與整數(shù)或浮點(diǎn)數(shù)相加來得到具有實(shí)部和虛部的復(fù)數(shù)。

Python 完全支持混合算術(shù):當(dāng)一個二元運(yùn)算符用于不同數(shù)字類型的操作數(shù)時,具有“較窄” 類型的操作數(shù)會被擴(kuò)展為另一個操作數(shù)的類型,整數(shù)比浮點(diǎn)數(shù)更窄,浮點(diǎn)數(shù)又比復(fù)數(shù)更窄。 混合類型數(shù)字之間的比較也使用相同的規(guī)則。 構(gòu)造器 int(), float() 和 complex() 可被用于生成特定類型的數(shù)字。

所有數(shù)字類型(復(fù)數(shù)除外)都支持下列運(yùn)算,按優(yōu)先級升序排序(所有數(shù)字運(yùn)算的優(yōu)先級都高于比較運(yùn)算):

evernotecid://D603D29C-DFBA-4C04-85E9-CCA3C33763F6/appyinxiangcom/23852268/ENResource/p19

注釋:

也稱為整數(shù)除法。 結(jié)果值是一個整數(shù),但結(jié)果的類型不一定是 int。 運(yùn)算結(jié)果總是向負(fù)無窮的方向舍入: 1//2 為 0, (-1)//2 為 -1, 1//(-2) 為 -1 而 (-1)//(-2) 為 0。

不可用于復(fù)數(shù)。 而應(yīng)在適當(dāng)條件下使用 abs() 轉(zhuǎn)換為浮點(diǎn)數(shù)。

從浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)會被舍入或是像在 C 語言中一樣被截斷;請參閱 math.floor() 和 math.ceil() 函數(shù)查看轉(zhuǎn)換的完整定義。

float 也接受字符串 "nan" 和附帶可選前綴 "+" 或 "-" 的 "inf" 分別表示非數(shù)字 (NaN) 以及正或負(fù)無窮。

Python 將 pow(0, 0) 和 0 ** 0 定義為 1,這是編程語言的普遍做法。

接受的數(shù)字字面值包括數(shù)碼 0 到 9 或任何等效的 Unicode 字符(具有 Nd 特征屬性的代碼點(diǎn))。

請參閱 http://www.unicode.org/Public... 查看具有 Nd 特征屬性的代碼點(diǎn)的完整列表。
整數(shù)類型的按位運(yùn)算

按位運(yùn)算只對整數(shù)有意義。 計算按位運(yùn)算的結(jié)果,就相當(dāng)于使用無窮多個二進(jìn)制符號位對二的補(bǔ)碼執(zhí)行操作。

二進(jìn)制按位運(yùn)算的優(yōu)先級全都低于數(shù)字運(yùn)算,但又高于比較運(yùn)算;一元運(yùn)算 ~ 具有與其他一元算術(shù)運(yùn)算 (+ and -) 相同的優(yōu)先級。

此表格是以優(yōu)先級升序排序的按位運(yùn)算列表:

注釋:

負(fù)的移位數(shù)是非法的,會導(dǎo)致引發(fā) ValueError。

左移 n 位等價于不帶溢出檢測地乘以 pow(2, n)。

右移 n 位等價于不帶溢出檢測地除以 pow(2, n)。

使用帶有至少一個額外符號擴(kuò)展位的有限個二進(jìn)制補(bǔ)碼表示(有效位寬度為 1 + max(x.bit_length(), y.bit_length()) 或以上)執(zhí)行這些計算就足以獲得相當(dāng)于有無數(shù)個符號位時的同樣結(jié)果。

整數(shù)類型的附加方法

int 類型實(shí)現(xiàn)了 numbers.Integral abstract base class。 此外,它還提供了其他幾個方法:

int.bit_length()

返回以二進(jìn)制表示一個整數(shù)所需要的位數(shù),不包括符號位和前面的零:

>>>
>>> n = -37
>>> bin(n)
"-0b100101"
>>> n.bit_length()
6

更準(zhǔn)確地說,如果 x 非零,則 x.bit_length() 是使得 2(k-1) <= abs(x) < 2k 的唯一正整數(shù) k。 同樣地,當(dāng) abs(x) 小到足以具有正確的舍入對數(shù)時,則 k = 1 + int(log(abs(x), 2))。 如果 x 為零,則 x.bit_length() 返回 0。

等價于:

def bit_length(self):
    # binary representation:  bin(-37) --> "-0b100101"
    s = bin(self)      
    # remove leading zeros and minus sign
    s = s.lstrip("-0b") 
    # len("100101") --> 6
    return len(s)       

3.1 新版功能.

int.to_bytes(length, byteorder, *, signed=False)

返回表示一個整數(shù)的字節(jié)數(shù)組。

>>> (1024).to_bytes(2, byteorder="big")
b"x04x00"
>>> (1024).to_bytes(10, byteorder="big")
b"x00x00x00x00x00x00x00x00x04x00"
>>> (-1024).to_bytes(10, byteorder="big", signed=True)
b"xffxffxffxffxffxffxffxffxfcx00"
>>> x = 1000
>>> x.to_bytes((x.bit_length() + 7) // 8, byteorder="little")
b"xe8x03"

整數(shù)會使用 length 個字節(jié)來表示。 如果整數(shù)不能用給定的字節(jié)數(shù)來表示則會引發(fā) OverflowError。

byteorder 參數(shù)確定用于表示整數(shù)的字節(jié)順序。 如果 byteorder 為 "big",則最高位字節(jié)放在字節(jié)數(shù)組的開頭。 如果 byteorder 為 "little",則最高位字節(jié)放在字節(jié)數(shù)組的末尾。 要請求主機(jī)系統(tǒng)上的原生字節(jié)順序,請使用 sys.byteorder 作為字節(jié)順序值。

signed 參數(shù)確定是否使用二的補(bǔ)碼來表示整數(shù)。 如果 signed 為 False 并且給出的是負(fù)整數(shù),則會引發(fā) OverflowError。 signed 的默認(rèn)值為 False。

3.2 新版功能.

classmethod int.from_bytes(bytes, byteorder, *, signed=False)

返回由給定字節(jié)數(shù)組所表示的整數(shù)。

>>> int.from_bytes(b"x00x10", byteorder="big")
16
>>> int.from_bytes(b"x00x10", byteorder="little")
4096
>>> int.from_bytes(b"xfcx00", byteorder="big", signed=True)
-1024
>>> int.from_bytes(b"xfcx00", byteorder="big", signed=False)
64512
>>> int.from_bytes([255, 0, 0], byteorder="big")
16711680

bytes 參數(shù)必須為一個 bytes-like object 或是生成字節(jié)的可迭代對象。

byteorder 參數(shù)確定用于表示整數(shù)的字節(jié)順序。 如果 byteorder 為 "big",則最高位字節(jié)放在字節(jié)數(shù)組的開頭。 如果 byteorder 為 "little",則最高位字節(jié)放在字節(jié)數(shù)組的末尾。 要請求主機(jī)系統(tǒng)上的原生字節(jié)順序,請使用 sys.byteorder 作為字節(jié)順序值。

signed 參數(shù)指明是否使用二的補(bǔ)碼來表示整數(shù)。

3.2 新版功能.

浮點(diǎn)類型的附加方法

float 類型實(shí)現(xiàn)了 numbers.Real abstract base class。 float 還具有以下附加方法。

float.as_integer_ratio()

返回一對整數(shù),其比率正好等于原浮點(diǎn)數(shù)并且分母為正數(shù)。 無窮大會引發(fā) OverflowError 而 NaN 則會引發(fā) ValueError。

float.is_integer()

如果 float 實(shí)例可用有限位整數(shù)表示則返回 True,否則返回 False:

>>>
>>> (-2.0).is_integer()
True
>>> (3.2).is_integer()
False

兩個方法均支持與十六進(jìn)制數(shù)字符串之間的轉(zhuǎn)換。 由于 Python 浮點(diǎn)數(shù)在內(nèi)部存儲為二進(jìn)制數(shù),因此浮點(diǎn)數(shù)與 十進(jìn)制數(shù) 字符串之間的轉(zhuǎn)換往往會導(dǎo)致微小的舍入錯誤。 而十六進(jìn)制數(shù)字符串卻允許精確地表示和描述浮點(diǎn)數(shù)。 這在進(jìn)行調(diào)試和數(shù)值工作時非常有用。

float.hex()

以十六進(jìn)制字符串的形式返回一個浮點(diǎn)數(shù)表示。 對于有限浮點(diǎn)數(shù),這種表示法將總是包含前導(dǎo)的 0x 和尾隨的 p 加指數(shù)。

classmethod float.fromhex(s)

返回以十六進(jìn)制字符串 s 表示的浮點(diǎn)數(shù)的類方法。 字符串 s 可以帶有前導(dǎo)和尾隨的空格。

請注意 float.hex() 是實(shí)例方法,而 float.fromhex() 是類方法。

十六進(jìn)制字符串采用的形式為:

[sign] ["0x"] integer ["." fraction] ["p" exponent]

可選的 sign 可以是 + 或 -,integer 和 fraction 是十六進(jìn)制數(shù)碼組成的字符串,exponent 是帶有可選前導(dǎo)符的十進(jìn)制整數(shù)。 大小寫沒有影響,在 integer 或 fraction 中必須至少有一個十六進(jìn)制數(shù)碼。 此語法類似于 C99 標(biāo)準(zhǔn)的 6.4.4.2 小節(jié)中所描述的語法,也是 Java 1.5 以上所使用的語法。 特別地,float.hex() 的輸出可以用作 C 或 Java 代碼中的十六進(jìn)制浮點(diǎn)數(shù)字面值,而由 C 的 %a 格式字符或 Java 的 Double.toHexString 所生成的十六進(jìn)制數(shù)字符串由為 float.fromhex() 所接受。

請注意 exponent 是十進(jìn)制數(shù)而非十六進(jìn)制數(shù),它給出要與系數(shù)相乘的 2 的冪次。 例如,十六進(jìn)制數(shù)字符串 0x3.a7p10 表示浮點(diǎn)數(shù) (3 + 10./16 + 7./162) * 2.010 即 3740.0:

>>>
>>> float.fromhex("0x3.a7p10")
3740.0

對 3740.0 應(yīng)用反向轉(zhuǎn)換會得到另一個代表相同數(shù)值的十六進(jìn)制數(shù)字符串:

>>>
>>> float.hex(3740.0)
"0x1.d380000000000p+11"
數(shù)字類型的哈希運(yùn)算

對于可能為不同類型的數(shù)字 x 和 y,要求 x == y 時必定 hash(x) == hash(y) (詳情參見 __hash__() 方法的文檔)。 為了便于在各種數(shù)字類型 (包括 int, float, decimal.Decimal 和 fractions.Fraction) 上實(shí)現(xiàn)并保證效率,Python 對數(shù)字類型的哈希運(yùn)算是基于為任意有理數(shù)定義統(tǒng)一的數(shù)學(xué)函數(shù),因此該運(yùn)算對 int 和 fractions.Fraction 的全部實(shí)例,以及 float 和 decimal.Decimal 的全部有限實(shí)例均可用。 從本質(zhì)上說,此函數(shù)是通過以一個固定質(zhì)數(shù) P 進(jìn)行 P 降模給出的。 P 的值在 Python 中可以 sys.hash_info 的 modulus 屬性的形式被訪問。

CPython implementation detail: 目前所用的質(zhì)數(shù)設(shè)定,在 C long 為 32 位的機(jī)器上 P = 231 - 1 而在 C long 為 64 位的機(jī)器上 P = 261 - 1。

詳細(xì)規(guī)則如下所述:

如果 x = m / n 是一個非負(fù)的有理數(shù)且 n 不可被 P 整除,則定義 hash(x) 為 m * invmod(n, P) % P,其中 invmod(n, P) 是對 n 模 P 取反。

如果 x = m / n 是一個非負(fù)的有理數(shù)且 n 可被 P 整除(但 m 不能)則 n 不能對 P 降模,以上規(guī)則不適用;在此情況下則定義 hash(x) 為常數(shù)值 sys.hash_info.inf。

如果 x = m / n 是一個負(fù)的有理數(shù)則定義 hash(x) 為 -hash(-x)。 如果結(jié)果哈希值為 -1 則將其替換為 -2。

特定值 sys.hash_info.inf, -sys.hash_info.inf 和 sys.hash_info.nan 被用作正無窮、負(fù)無窮和空值(所分別對應(yīng)的)哈希值。 (所有可哈希的空值都具有相同的哈希值。)

對于一個 complex 值 z,會通過計算 hash(z.real) + sys.hash_info.imag hash(z.imag) 將實(shí)部和虛部的哈希值結(jié)合起來,并進(jìn)行降模 2sys.hash_info.width 以使其處于 range(-2(sys.hash_info.width - 1), 2*(sys.hash_info.width - 1)) 范圍之內(nèi)。 同樣地,如果結(jié)果為 -1 則將其替換為 -2。

為了闡明上述規(guī)則,這里有一些等價于內(nèi)置哈希算法的 Python 代碼示例,可用于計算有理數(shù)、float 或 complex 的哈希值:

import sys, math

def hash_fraction(m, n):
    """Compute the hash of a rational number m / n.

    Assumes m and n are integers, with n positive.
    Equivalent to hash(fractions.Fraction(m, n)).

    """
    P = sys.hash_info.modulus
    # Remove common factors of P.  (Unnecessary if m and n already coprime.)
    while m % P == n % P == 0:
        m, n = m // P, n // P

    if n % P == 0:
        hash_value = sys.hash_info.inf
    else:
        # Fermat"s Little Theorem: pow(n, P-1, P) is 1, so
        # pow(n, P-2, P) gives the inverse of n modulo P.
        hash_value = (abs(m) % P) * pow(n, P - 2, P) % P
    if m < 0:
        hash_value = -hash_value
    if hash_value == -1:
        hash_value = -2
    return hash_value

def hash_float(x):
    """Compute the hash of a float x."""

    if math.isnan(x):
        return sys.hash_info.nan
    elif math.isinf(x):
        return sys.hash_info.inf if x > 0 else -sys.hash_info.inf
    else:
        return hash_fraction(*x.as_integer_ratio())

def hash_complex(z):
    """Compute the hash of a complex number z."""

    hash_value = hash_float(z.real) + sys.hash_info.imag * hash_float(z.imag)
    # do a signed reduction modulo 2**sys.hash_info.width
    M = 2**(sys.hash_info.width - 1)
    hash_value = (hash_value & (M - 1)) - (hash_value & M)
    if hash_value == -1:
        hash_value = -2
    return hash_value
上一篇文章:Python標(biāo)準(zhǔn)庫---9、內(nèi)置類型:邏輯值檢測、布爾運(yùn)算、比較
下一篇文章:Python標(biāo)準(zhǔn)庫---11、內(nèi)置類型:迭代器類型、序列類型

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43976.html

相關(guān)文章

  • Python標(biāo)準(zhǔn)---3、內(nèi)置函數(shù)(G-H-I-J-K)

    摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)內(nèi)置函數(shù)返回對象命名屬性的值。返回表示當(dāng)前全局符號表的字典。例如,從二進(jìn)制數(shù)據(jù)庫文件中讀取固定寬度的塊,直至到達(dá)文件的末尾上一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù) 上一篇文章:Python標(biāo)準(zhǔn)庫---2、內(nèi)置函數(shù)(D-E-F)下一篇文章:Python標(biāo)準(zhǔn)庫---4、內(nèi)置函數(shù)(L-M-N-O) 內(nèi)置函數(shù): showImg(http...

    gself 評論0 收藏0
  • Python標(biāo)準(zhǔn)---11、內(nèi)置類型:迭代器類型、序列類型(list-typle-range)

    摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型數(shù)字類型下一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型文本序列類型迭代器類型支持在容器中進(jìn)行迭代的概念。該對象需要支持下文所述的迭代器協(xié)議。這是同時允許容器和迭代器配合和語句使用所必須的。 上一篇文章:Python標(biāo)準(zhǔn)庫---10、內(nèi)置類型:數(shù)字類型下一篇文章:Python標(biāo)準(zhǔn)庫---12、內(nèi)置類型:文本序列類型(str) ## 迭代器類型Python 支持在容器中進(jìn)行迭代的概念。...

    syoya 評論0 收藏0
  • Python標(biāo)準(zhǔn)---9、內(nèi)置類型:邏輯值檢測、布爾運(yùn)算、比較

    摘要:邏輯值檢測任何對象都可以進(jìn)行邏輯值的檢測,以便在或作為條件或是作為下文所述布爾運(yùn)算的操作數(shù)來使用。重要例外布爾運(yùn)算和總是返回其中一個操作數(shù)。的優(yōu)先級比非布爾運(yùn)算符低,因此會被解讀為而會引發(fā)語法錯誤。它們的優(yōu)先級相同比布爾運(yùn)算的優(yōu)先級高。 上一篇文章:Python標(biāo)準(zhǔn)庫---8、內(nèi)置常量下一篇文章:Python標(biāo)準(zhǔn)庫---10、內(nèi)置類型:數(shù)字類型 內(nèi)置類型 以下部分描述了解釋器中內(nèi)置的...

    zeyu 評論0 收藏0
  • Python標(biāo)準(zhǔn)---2、內(nèi)置函數(shù)(D-E-F)

    摘要:如果對象允許,該函數(shù)將刪除指定的屬性。返回值為表達(dá)式求值的結(jié)果。語法錯誤將作為異常被報告。該函數(shù)返回值是。例如數(shù)字類型描述了浮點(diǎn)類型。將轉(zhuǎn)換為控制的格式化表示。上一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù) 上一篇文章:Python標(biāo)準(zhǔn)庫---1、內(nèi)置函數(shù)(A-B-C)下一篇文章:Python標(biāo)準(zhǔn)庫---3、內(nèi)置函數(shù)(G-H-I-J-K) 內(nèi)置函數(shù): showImg(https:/...

    Fourierr 評論0 收藏0
  • Python標(biāo)準(zhǔn)---12、內(nèi)置類型:文本序列類型(str)

    摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型迭代器類型序列類型下一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型二進(jìn)制序列類型文本序列類型在中處理文本數(shù)據(jù)是使用對象,也稱為字符串。正式的定義為十進(jìn)制數(shù)字符就是一般分類中的字符。 上一篇文章:Python標(biāo)準(zhǔn)庫---11、內(nèi)置類型:迭代器類型、序列類型(list-typle-range)下一篇文章:Python標(biāo)準(zhǔn)庫---13、內(nèi)置類型:二進(jìn)制序列類型 ( bytes, bytear...

    luoyibu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<