Python 數(shù)據(jù)類型
? Python 提供了一些內置的數(shù)據(jù)類型,它們由系統(tǒng)預定義好,在程序中可以直接使用。?
? Python 數(shù)據(jù)類型包括數(shù)值型、字符串型、布爾型等基本數(shù)據(jù)類型,這是一般程序設計語言都有的數(shù)據(jù)類型。?
? 為了使程序能描述現(xiàn)實世界中各種復雜數(shù)據(jù),Python ?還有列表、元組、字典和集合等復合數(shù)據(jù)類型,這是 Python 中具有特色的數(shù)據(jù)類型
1.數(shù)值類型
? Python 支持3 種不同的數(shù)值數(shù)據(jù)類型:
? 整型(int)
? 浮點型(float) ? 復數(shù)型(complex)
一、整型數(shù)據(jù)
? 在Python 3.x 中,整型數(shù)據(jù)的值在計算機內的表 示不是固定長度的,只要內存許可,整數(shù)可以擴展到任意長度,整數(shù)的取值范圍幾乎包括了全部整數(shù)(無限大),這給大數(shù)據(jù)的計算帶來便利。
? Python 的整型常量有以下4 種表示形式。
? (1)十進制整數(shù)
? 如120、0、?374 等。
? (2)二進制整數(shù)
? 它以0b 或0B(數(shù)字0 加字母b 或B)開頭,后接數(shù)字 0,1 的整數(shù)。
? 例:?
? >>> 0b1111?
? 15?
? 0b1111 表示一個二進制整數(shù),其值等于十進制數(shù)15。
? (3)八進制整數(shù)?
? 它是以0o 或0O(數(shù)字0 加小寫字母o 或大寫字母 O)開頭,后接數(shù)字0~7的整數(shù)。
? 例:?
? >>> 0o127
? 87?
? 0o127 表示一個八進制整數(shù),其值等于十進制數(shù) 87。
? (4)十六進制整數(shù)?
? 它是以0x 或0X 開頭,后接0~9 和A~F(或用小 寫字母)字符的整數(shù)。
? 例:
? >>> 0xabc?
? 2748?
? 0xabc 表示一個十六進制整數(shù),其值等于十進制數(shù)2748。
二、浮點型數(shù)據(jù)
? 浮點型數(shù)據(jù)表示一個實數(shù),有以下兩種表示形式。
? (1)十進制小數(shù)形式?
? 它由數(shù)字和小數(shù)點組成,如3.23、34.0、0.0 等。
? 浮點型數(shù)據(jù)允許小數(shù)點后面沒有任何數(shù)字,表示小數(shù)部分為0,如34.表示34.0。
? (2)指數(shù)形式?
? 指數(shù)形式即用科學計數(shù)法表示的浮點數(shù),用字母e(或E)表示以10 為底的指數(shù),e 之前為數(shù)字部分,之后為指數(shù)部分,且兩部分必須同時出現(xiàn),指數(shù)必須為整數(shù)。
? 例:?
? >>> 45e-5?
? 0.00045?
? >>> 45e-6?
? 4.5e-05?
? >>> 9.34e2?
? 934.0?
? 45e-5、45e-6、9.34e2 是合法的浮點型常量,分別代表 45×10?5 、45×10?6 、9.34×102。
? 字母e(或E)前必有數(shù), e(或E)后必為整數(shù)。?
? 例:e4、3.4e4.5、34e 等是非法的浮點型常量。
? 對于浮點數(shù),Python 3.x 默認提供17 位有效數(shù)字的精度,相當于C 語言中的雙精度浮點數(shù)。
? 例:?
? >>> 1234567890123456.0?
? 1234567890123456.0?
? >>> 1234567890123456789.0?
? 1.2345678901234568e+18?
? >>> 1234567890123456789.0+1?
? 1.2345678901234568e+18?
? >>> 1234567890123456789.0+1-1234567890123456789.0?
? 0.0?
?>>> 1234567890123456789.0-1234567890123456789.0+1?
? 1.0
? 在Python 中,為什么1234567890123456789.0+1- 1234567890123456789.0 的結果為0.0,而 1234567890123456789.0-1234567890123456789.0+1 的 結果為1.0,這就需要了解Python 浮點數(shù)的表示方法。?
? 數(shù)學上1234567890123456789.0+1 等于 1234567890123456790.0,但由于浮點數(shù)受17 位有效 數(shù)字的限制,Python 中1234567890123456789.0+1 的結果等于1.2345678901234568e+18,其中加1的結果 被忽略了, 1234567890123456789.0+1 再減去 1234567890123456789.0 的結果為0 。
? 1234567890123456789.0- 1234567890123456789.0+1 先執(zhí)行的是減法運算,得到0,然后再加上1,結果為1.0,所以計算機中的計算與數(shù)學上的計算是不同的,其原因是計算 機中的計算必須依賴于計算機的計算能力。?
? 在進行問題求解時必須注意這種差別,這就是計算思維的思想。
? 例:?
? >>> 1.001*10?
? 10.009999999999998?
? 為什么Python 中1.001*10 結果是 10.009999999999998,而不是10.01,其原因在于十進制小數(shù)轉換為二進制小數(shù)時可能出現(xiàn)無限小數(shù)問題,而Python 在存儲小數(shù)時使用的是雙精度 浮點數(shù),這種數(shù)只可以保存一定位數(shù)的有效數(shù)字, 所以當遇到無限小數(shù)時就會出現(xiàn)損失精度的問題。
三、復數(shù)型數(shù)據(jù)
? 在科學計算問題中常會遇到復數(shù)運算問題。?
? 例:數(shù)學中求方程的復根、電工學中交流電路的 計算、自動控制系統(tǒng)中傳遞函數(shù)的計算等都要用 到復數(shù)運算。?
? Python 提供了復數(shù)類型,這使得有關復數(shù)運算問 題變得方便容易。
? 復數(shù)類型數(shù)據(jù)的形式為:a+bJ 或 a+bj?
? 其中,a 是復數(shù)的實部,b 是復數(shù)的虛部,J 表示 ?1 的平方根(虛數(shù)單位)。?
? 虛數(shù)單位既可以用大寫字母J 也可以寫成小寫字母 j,注意不是數(shù)學上的i。?
? 例:?
? >>> x=12+34J?
? >>> print(x)?
? (12+34j)
? 可以通過x.real 和x.imag 來分別獲取復數(shù)x 的實部和虛部,結果都是浮點型。
? 例:接著上面的語句,繼續(xù)執(zhí)行以下語句:?
? >>> x.real?
? 12.0?
? >>> x.imag?
? 34.0
2.字符串類型
(1)Python 標準字符串
? 在 Python 中定義一個標準字符串可以使用單引號、 雙引號和三引號(三個單引號或三個雙引號), 這使得Python 輸入文本更方便。?
? 例如,當字符串的內容中包含雙引號時,就可以用單引號定義,反之亦然。
? 例:
? >>> s='uestc'?
? >>> print(s)?
? uestc?
? >>> print(s[0]) #輸出字符串的第1 個字符?
? u?
? >>> print(s[2:4]) #輸出字符串的第3~4 個字符?
? st?
? >>> t="I am 'Python'"?
? >>> print(t)
? I am 'Python'
? 用單引號或雙引號括起來的字符串必須在一行內表示,這是最常見的表示字符串的方法,而用三引號括起來的字符串可以是多行的(文本塊)。
? >>> s="""I'm "Python"!"""?
? >>> print(s)?
? I'm "Python"!?
? >>> s="""?
? 1.AAAA?
? 2.BBBB?
? 3.CCCC?
? 請選擇:"""?
? >>> print(s)?
? 1.AAAA?
? 2.BBBB?
? 3.CCCC?
? 請選擇:
? Python 字符串中的字符不能被改變,向一個位置 賦值會導致錯誤。?
? 例:?
? >>> s="ABCDEFG"?
? >>> s[1]="8" #試圖改變第2 個字符導致出錯
? 在Python 中,修改字符串只能重新賦值,每修改 一次字符串就生成一個新的字符串對象,這看起 來好像會造成處理效率下降。?
? 其實,Python 系統(tǒng)會自動對不再使用的字符串進行垃圾回收,所以,新的對象重用了前面已有字 符串的空間。