python之數字的知識點小結
阿新 • • 發佈:2020-09-16
python中的數字是不可變物件,有整形(int)、浮點型(float)、複數(complex)、布林型(bool)。
整形
-
小數字池:範圍是-5至256,當i數值在這個範圍內時直譯器不需要新建物件,而是直接把快取中的id賦給變數。
# 在repl環境中測試下列程式碼 >>> a=250 >>> b=255 >>> print(id(a),id(b)) # -5至256範圍內 out: 140728491521632 140728491521632 # a和b的id相同 >>> a=257 >>> b=257 >>> print(id(a),id(b)) # -5至256範圍外 out: 2083422435600 2083422435632 # a和b的id不同
-
值的範圍:python中整形不區分短整形、整形、長整形,直譯器會根據數字的大小動態分配儲存空間,值的範圍只受限於記憶體大小。
import sys a = 1000 b = 999999999999999999999 c = b**2 print(sys.getsizeof(a)) print(sys.getsizeof(b)) print(sys.getsizeof(c)) out: 28 36 44
浮點型
記憶體消耗:python中浮點型相當於其他程式語言的雙精度浮點型,佔用記憶體空間固定為24位元組。python中無單精度浮點型。
import sys a = 9999999999999999999999999999999999999999999.99999999988888888 b = 0.1 print(sys.getsizeof(a), sys.getsizeof(b)) out: 24
值的範圍:關於浮點型值的範圍可以用用如下方式檢視。
import sys
print(sys.float_info)
out:
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
複數
python中的複數與數學中的複數概念完全相同。實際程式設計中很少用到,只有在極少數需要科學計算的場合才會用到。在此就不贅述了。
布林
python的布林型非常特殊,需要著重梳理。布林是邏輯判斷,判斷結果只有2種:
-
True:表示真。
字串、元組、列表、字典、集合、類的例項等,值不為空判定為True。
整形、浮點型、複數,值不為0即判定為True。
-
False:表示假。
字串、元組、列表、字典、集合、類的例項等,值為空判定為True。
整形、浮點型、複數,值為0即判定為False。
None,判定為False。None即是空值的意思,千萬不要混淆了None和0。None表示無值,值的大小未知;0表示有值,值的大小已經確定。
python的布林判定設定非常特殊,熟練掌握以後可以寫出非常簡潔的程式碼。以下我舉個簡潔實用的程式碼例項。
# 刪除列表中開頭是'a'的元素
list1 = ['aa', 'adc', 'bb', 'cc', 'aa', 'abc', 'dd']
length = len(list1)
while length: # 效果等價於while length==0
if list1[length - 1][0] == 'a':
del list1[length - 1]
length -= 1
print(list1)
out:
['bb', 'cc', 'dd']