官术网_书友最值得收藏!

2.3 數(shù)據(jù)類型

Python是一種動(dòng)態(tài)類型語(yǔ)言,變量不需要提前聲明而是在賦值時(shí)根據(jù)所賦的值自動(dòng)確定類型,且變量類型隨著所賦值類型的變動(dòng)而變化。Python中變量名定義遵循以下規(guī)定。

(1)變量名由字母或者下畫(huà)線開(kāi)頭的字母、下畫(huà)線和數(shù)字組成,數(shù)字不能作為變量名的開(kāi)頭字符。例如,aa、a123、a5b、a_b、_abc、_a_b_c是合法變量名,而1a、aa#、a!b是非法變量名。

(2)系統(tǒng)關(guān)鍵字不能作為變量名使用。例如,int、True、print等系統(tǒng)關(guān)鍵字不能作為變量名使用。

(3)變量名中字母區(qū)分大小寫(xiě)。例如,aa、Aa、aA、AA代表四個(gè)不同的變量。

圖2-2 Atom集成開(kāi)發(fā)環(huán)境

(4)變量在內(nèi)存中地址可通過(guò)函數(shù)id()獲取,例如,id(aa)。

2.3.1 布爾型

布爾型是Python中最簡(jiǎn)單的數(shù)據(jù)類型,包括True和False兩個(gè)值。比較和邏輯運(yùn)算結(jié)果為布爾型值,條件成立,值為T(mén)rue;條件不成立,值為False。舉例如下:

布爾型變量或者值可進(jìn)行的運(yùn)算可通過(guò)dir(bool)查看,常用的比較運(yùn)算符如表2-1所示,邏輯運(yùn)算符如表2-2所示。

表2-1 比較運(yùn)算符

表2-2 邏輯運(yùn)算符

2.3.2 整型

Python中的整型可以處理任意大小的整數(shù),整型變量或者值可進(jìn)行的運(yùn)算可通過(guò)dir(int)查看,整數(shù)運(yùn)算符如表2-3所示。

表2-3 整數(shù)運(yùn)算符

其中,/運(yùn)算的結(jié)果為浮點(diǎn)型,如:8/4=2.0, 6/4=1.5;%運(yùn)算時(shí),運(yùn)算結(jié)果符號(hào)與模數(shù)符號(hào)一致且絕對(duì)值最小,如:7%4=3,-7%4=1, 7%-4=-1,-7%-4=-3;//運(yùn)算時(shí),被除數(shù)與除數(shù)符號(hào)一致時(shí),結(jié)果為正,否則,結(jié)果為負(fù),且運(yùn)算結(jié)果向下取整,如,7//4=1,-7//4=-2, 7//-4=-2,-7//-4=1。

整數(shù)也可以表示成十六進(jìn)制形式,如:0x4a、0xffff等。

2.3.3 浮點(diǎn)型

Python中的浮點(diǎn)型數(shù)可以表示成123.45和1.2345e2兩種形式,浮點(diǎn)型變量值可進(jìn)行的運(yùn)算可通過(guò)dir(float)查看,常用運(yùn)算符如表2-4所示。

表2-4 浮點(diǎn)型數(shù)運(yùn)算符

2.3.4 復(fù)數(shù)型

Python中可以使用復(fù)數(shù),復(fù)數(shù)分為實(shí)部與虛部,表示為(a+bj),使用complex(a, b)產(chǎn)生復(fù)數(shù)(a+bj),其中a表示實(shí)部,b表示虛部。復(fù)數(shù)可進(jìn)行表2-4的運(yùn)算,復(fù)數(shù)變量或者值可進(jìn)行的運(yùn)算可通過(guò)dir(complex)查看,常見(jiàn)的復(fù)數(shù)運(yùn)算函數(shù)如表2-5所示。

表2-5 復(fù)數(shù)運(yùn)算函數(shù)

Python中數(shù)值型數(shù)據(jù),包括整型、浮點(diǎn)型和復(fù)數(shù)運(yùn)算函數(shù)如表2-6所示。

表2-6 數(shù)值型數(shù)據(jù)運(yùn)算函數(shù)

2.3.5 字符串型

Python中字符串是用英文半角單引號(hào)'或者雙引號(hào)"括起來(lái)的字符序列,如:'abc#123%def'、"abc#123%def"。如果字符串中包括單引號(hào)字符,可以用雙引號(hào)括起來(lái),反之亦然,如:"abc'456"、'abc"456'。如果字符串中既有單引號(hào),也有雙引號(hào),可以使用轉(zhuǎn)義符表示,如:'123\'abc\"456'、"123\'abc\"456"。Python字符串轉(zhuǎn)義符如表2-7所示。

表2-7 字符串轉(zhuǎn)義符

若字符串前面為r或R,則字符串中字符不轉(zhuǎn)義,如:r'123\n456\t'或r"123\n456\t",則表示字符串123\n456\t,其中\(zhòng)n與\t不轉(zhuǎn)義。

如果使用三個(gè)單引號(hào)將字符串括起來(lái),則可以自由地表示多行字符,且其中可以自由地使用單引號(hào)和雙引號(hào),如下所示。

字符串變量testStr中包括四行字符,其中的單引號(hào)和雙引號(hào)無(wú)須轉(zhuǎn)義。

表2-1所列的比較運(yùn)算符可以判斷兩個(gè)字符串之間的關(guān)系,除此之外,字符串可進(jìn)行的運(yùn)算可通過(guò)dir(str)查看,常見(jiàn)運(yùn)算如表2-8所示,子串操作如表2-9所示,轉(zhuǎn)換與判斷操作如表2-10所示。

表2-8 常見(jiàn)字符串運(yùn)算

表2-9 字符串子串操作

表2-10 字符串轉(zhuǎn)換與判斷

計(jì)算機(jī)中存在多種字符集和編碼方案,以表示不同范圍的字符,使用不當(dāng)會(huì)引起程序執(zhí)行錯(cuò)誤。常用的字符集和編碼方案有UNICODE、ASCII、GB18030、GBK、BIG5等,其中,UNICODE最為常用,UTF-8、UTF-16、UTF-32是UNICODE的具體實(shí)現(xiàn)。Python 3默認(rèn)使用UTF-8編碼方案表示字符,如圖2-2程序使用UTF-8編碼。Python 3中也經(jīng)常使用bytes,即以字節(jié)流形式存儲(chǔ)字符串,有關(guān)字符編碼常見(jiàn)操作如表2-11所示。

表2-11 Python 3字符編碼操作

Python字符串可以使用類似C語(yǔ)言中的格式化符號(hào),如表2-12所示。

表2-12 字符串格式化符號(hào)

2.3.6 列表型

Python中的列表是一對(duì)“[]”括起來(lái)的成員序列,成員之間以“,”隔開(kāi),成員在列表中的位置從0開(kāi)始,成員可以是任意類型,例如,[]、[12, 45, 10]、['Hello', 123, True, 23.4]、[12, [1,2], False]等,其中[]是一個(gè)空列表,[12, 45, 10]是成員均為整數(shù)的列表,['Hello', 123, True, 23.4]是不同類型成員組成的列表,[12,[1, 2], False]中包括列表類型成員。列表操作可用dir(list)查看,常用操作如表2-13所示。

表2-13 列表操作

2.3.7 元組型

Python中的元組是一對(duì)“()”括起來(lái)的成員序列,成員之間以“,”隔開(kāi),成員在元組中位置從0開(kāi)始,成員可以是任意類型。例如,()、(12, 45, 10)、('Hello', 123, True, 23.4)、(12,(1, 2), False)等,其中()是一個(gè)空元組,(12, 45, 10)是成員均為整數(shù)的元組,('Hello', 123, True, 23.4)是不同類型成員組成的元組,(12,(1, 2), False)中包括元組類型成員。元組中只有一個(gè)成員時(shí),為消除歧義,在成員后跟一個(gè)逗號(hào),例如,(1,)、('a',)等。元組與列表相似,但列表中元素可以修改,而元組中元素不能直接修改,元組操作可通過(guò)dir(tuple)查看,常用操作如表2-14所示。

表2-14 元組操作

元組中的成員為數(shù)值、布爾型值和字符串時(shí),無(wú)法修改,但為類似于列表型的值時(shí),可以修改,例如,tt=('a',[1], 'b'),執(zhí)行tt[1].append(2),則tt的值為('a', [1, 2], 'b')。

2.3.8 字典型

Python中的字典是一對(duì)“{}”括起來(lái)的鍵/值對(duì)成員序列,成員之間以“,”隔開(kāi),鍵與值之間以“:”隔開(kāi)。例如,{}、{'Zhao':1, 'Qian':2}、{1:[1, 2],2:(3, 4),3:'abc'}、{(1,):[1],(1, 2):[1, 2],(1, 2, 3):[1, 2, 3]}等,其中,{}是一個(gè)空字典;{'Zhao':1,'Qian':2}是鍵為字符串,值為整數(shù)的字典;{1:[1, 2],2:(3, 4),3:'abc'}是鍵為整數(shù),值為列表、元組和字符串的字典;{(1,):[1],(1, 2):[1, 2],(1, 2, 3):[1, 2, 3]}是鍵為元組、值為列表的字典。字典的鍵可以是字符串、數(shù)值或者元組,不能為列表,因?yàn)榱斜碇悼勺儯荒苡?jì)算hash值,hash值可以用函數(shù)hash()計(jì)算。例如,hash('abc')、hash(123)、hash(1.23)、hash((1+2j))、hash((1, 2, 3))等,hash([1, 2, 3])會(huì)拋出異常。

一個(gè)字典中,鍵應(yīng)該是唯一的,若鍵重復(fù),一般保留最后的鍵/值對(duì),其余的自動(dòng)丟失,例如,dc={'z':1,'z':2,'z':3},則dc={'z':3}。

在實(shí)際應(yīng)用中,字典的鍵經(jīng)常為字符串,值為任意類型,字典類型操作可通過(guò)dir(dict)查看,常用操作如表2-15所示。

表2-15 字典操作

2.3.9 日期型

日期型是與時(shí)間相關(guān)的類型,Python的time、datetime和calendar模塊中包含了與日期型數(shù)據(jù)相關(guān)的操作。

1.time模塊

time模塊主要處理時(shí)間,在使用前需要通過(guò)“import time”引入time模塊。time模塊所包含的操作可通過(guò)dir(time)查看。time模塊包含的struct_time元組如表2-16所示,時(shí)間格式化符號(hào)如表2-17所示,常用操作如表2-18所示。

表2-16 struct_time元組

表2-17 時(shí)間格式化符號(hào)

表2-18 time模塊操作

2.datetime模塊

time模塊主要使用時(shí)間元組和距GMT1970紀(jì)元的秒數(shù)表示時(shí)間,與time模塊不同,datetime模塊表示時(shí)間的方式更加貼近人們平時(shí)的習(xí)慣,并且datetime模塊包含了date、time、datetime、timedelta和tzinfo五個(gè)類,在引入模塊時(shí),語(yǔ)句為“from datetime import *”或者“from datetime import date, time, datetime, timedelta, tzinfo”,其中time類與time模塊沖突,后引入的會(huì)使先引入的失效,可通過(guò)別名引入避免沖突,例如“import time as time0”或者“from datetime import time as dtime”。datetime模塊所包含的操作可通過(guò)dir(date)、dir(time)、dir(datetime)、dir(timedelta)和dir(tzinfo)查看,別名引入時(shí),需要使用別名,例如,dir(dtime)。

datetime模塊date類主要與年月日組成的日期相關(guān),常用操作如表2-19所示。

表2-19 datetime模塊date類操作

datetime模塊time類主要與時(shí)分秒組成的時(shí)間相關(guān),常用操作如表2-20所示。

表2-20 datetime模塊time類操作

datetime模塊datetime類是date類與time類的組合,主要與年月日時(shí)分秒組成的時(shí)間相關(guān),常用操作如表2-21所示。

表2-21 datetime模塊datetime類操作

datetime模塊的timedelta類主要用于表示兩個(gè)時(shí)間之間的差值,具體為date類值之間或者datetime類值之間的差值,例如,td1=date(2017,7,1)-date(2016, 7, 1)和td2=datetime(2017, 7, 1, 14, 30, 10)-datetime(2016, 7, 1, 10, 10, 8)。

timedelta表示時(shí)間差值時(shí),使用days、seconds、microseconds 3個(gè)屬性值表示,常用操作如表2-22所示。

表2-22 datetime模塊timedelta類操作

datetime模塊的tzinfo類主要提供時(shí)區(qū)信息,但tzinfo是一個(gè)抽象類,不能直接使用,需要通過(guò)派生子類使用,實(shí)際應(yīng)用中使用較少。

3.calendar模塊

calendar模塊主要處理日歷,在使用前需要通過(guò)“import calendar”引入calendar模塊,calendar模塊所包含的操作可通過(guò)dir(calendar)查看。calendar模塊分別用數(shù)字0~6表示星期一至星期天,常用操作如表2-23所示。

表2-23 calendar模塊操作

2.3.10 數(shù)組型

Python中標(biāo)準(zhǔn)數(shù)據(jù)類型沒(méi)有數(shù)組,列表可以當(dāng)作一維數(shù)組使用,列表嵌套可以構(gòu)成二維或者多維數(shù)組。

Python中要使用數(shù)組,可以通過(guò)語(yǔ)句“import array”引入模塊array,模塊array中提供基本的數(shù)組操作;或者安裝第三方庫(kù)NumPy,第三方庫(kù)NumPy提供大量的數(shù)值運(yùn)算,包括各種數(shù)組操作。本書(shū)介紹array中提供的數(shù)組操作,需要使用NumPy的讀者可以通過(guò)安裝NumPy包,進(jìn)行各種數(shù)值運(yùn)算和數(shù)組操作。

定義數(shù)組前需通過(guò)語(yǔ)句“import array”引入模塊array,定義數(shù)組的格式為:xx=array.array(type[, value]),其中xx為數(shù)組名;type為數(shù)組元素類型;value可選,為數(shù)組的初始值,其中,數(shù)組中各元素的值必須為相同類型,數(shù)組長(zhǎng)度可變,下標(biāo)從0開(kāi)始。

array中數(shù)組元素類型如表2-24所示。

表2-24 array數(shù)組元素類型

表2-24中array數(shù)組元素類型中沒(méi)有普通的字符類型,普通的字符類型使用字符串實(shí)現(xiàn)。array數(shù)組定義舉例如下。

array數(shù)組常用操作如表2-25所示。

表2-25 array數(shù)組常用操作

主站蜘蛛池模板: 同德县| 金阳县| 遂溪县| 南宫市| 故城县| 汾西县| 从江县| 双峰县| 淅川县| 社旗县| 辽阳市| 呼图壁县| 泸州市| 榕江县| 南靖县| 孟连| 古浪县| 永川市| 宜章县| 阳泉市| 乐业县| 正蓝旗| 吉木萨尔县| 深圳市| 叶城县| 浮山县| 安徽省| 孟州市| 连山| 都江堰市| 通州市| 前郭尔| 浦北县| 前郭尔| 宣武区| 呈贡县| 繁峙县| 连山| 佛教| 栾川县| 淄博市|