Python程序設(shè)計(jì)與大數(shù)據(jù)-第2章-數(shù)據(jù)類型_第1頁
Python程序設(shè)計(jì)與大數(shù)據(jù)-第2章-數(shù)據(jù)類型_第2頁
Python程序設(shè)計(jì)與大數(shù)據(jù)-第2章-數(shù)據(jù)類型_第3頁
Python程序設(shè)計(jì)與大數(shù)據(jù)-第2章-數(shù)據(jù)類型_第4頁
Python程序設(shè)計(jì)與大數(shù)據(jù)-第2章-數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩117頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2.7字典習(xí)題of5612.8字符串第二章數(shù)據(jù)類型2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of312Python的數(shù)據(jù)類型分為數(shù)值類型(數(shù)值類型包括整型、浮點(diǎn)型等)、序列類型(列表、元組,包括字符串,字符串本質(zhì)上也是一個序列類型)、集合類型、字典(是一個比較特殊的叫做映射類型)以及其它類型。Python提供了一個特定的內(nèi)置函數(shù)type()來檢查一個對象的類型,它返回的是一個叫做類型對象的特殊類型,可以把它歸類到其它的類型里邊。2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of3131類型檢測函數(shù)type( )使用type()函數(shù)快速檢查某一個變量或常量的類型,以便確定它們所能進(jìn)行操作的種類。

2、type(8)說明“8”是屬于“int”類型的。但目前并沒有把它放到變量里邊。其中“”就是一個類型對象,是用來描述數(shù)據(jù)類型的一個類型對象。 type(3.14)檢測的結(jié)果表明,小數(shù)“3.14”的類型是“float”類型,是浮點(diǎn)類型。當(dāng)然也可以檢測變量的類型,例如: name = Tom type(name)2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of3142空對象(None)Python中還有一個特殊的類型稱之為空對象??諏ο螅∟one):表示一個特殊的常量,表示什么都沒有。3布爾類型(bool)的本質(zhì)Python中的布爾類型,表示事物的兩種狀態(tài),真(True)或者假(False),通常它

3、是用來測試一個結(jié)果是“真”或“假”??聪旅娴膶?shí)例:5 35 type(5 3”或者“5 3”創(chuàng)建一個對象,“5 3”這個對象是有類型的,可以用type( )函數(shù)測試所創(chuàng)建的這個對象的類型。2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of315bool類型中的True和False對應(yīng)著int類型中的1和0。Python里布爾型既有兩個獨(dú)立的常量“True、False“,另外它和int型的1和0 又有著千絲萬縷的關(guān)系。True = 1False = 0以上實(shí)例說明bool型的True的本質(zhì)和int型的1是一致的,F(xiàn)alse和0一致。2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of316True =

4、 1True = 3False = 0False = -3上結(jié)果表明bool型的True和False只和int型的1和0對應(yīng)。2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of317可以直接把bool型的True和Fals當(dāng)作一個1或者0來使用: x = 3 + Trueprint(x) y = 4 + Falseprint(y)2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of318另外,布爾型也有一個內(nèi)置函數(shù)“bool”,它可以將某個值轉(zhuǎn)換成布爾型的結(jié)果。bool(obj): 將對象“obj”轉(zhuǎn)換成布爾型。bool(1)bool(0)bool(4)bool(-5)注意:本質(zhì)上“True”等同于

5、1,“False”等同于0,但轉(zhuǎn)換時就不限于1和0了。轉(zhuǎn)換的原則是:把各種不同類型的特殊數(shù)據(jù)當(dāng)作“False”來處理,非特殊數(shù)據(jù)當(dāng)作“True”來處理。2.1 核心內(nèi)置數(shù)據(jù)類型概述第二章 數(shù)據(jù)類型of319bool(abc)bool() #空字符串前面介紹了一個特殊的對象“None”,空對象,空對象是什么都沒有,也當(dāng)作“False”來處理。 bool(None)各種數(shù)據(jù)類型的特殊值:數(shù)值0、0.0、空字符串、空列表、空元組()、空字典、空集合set()等也都當(dāng)作“False”。2.3列表2.7字典習(xí)題of56102.8字符串第二章數(shù)據(jù)類型2.2 數(shù)據(jù)類型申明及基本運(yùn)算第二章 數(shù)據(jù)類型of311

6、12.2.1 整型整數(shù)類型共有4種進(jìn)制表示:十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制。(1)十進(jìn)制整數(shù)。為默認(rèn)情況,由0-9的數(shù)字組成,如12,23。(3)八進(jìn)制整數(shù)。由0-7的數(shù)字組成,在Python中表示該數(shù)為八進(jìn)制時需在數(shù)字前面加0o或0O(第1個是數(shù)字0,第2個是字母o,大寫或者小寫均可。以下均相同),如0o1,0O11等。(2)十六進(jìn)制整數(shù)。由0-9的數(shù)字、a-f的字母組成,在Python中表示該數(shù)為十六進(jìn)制時需在數(shù)字前面加0 x或0X,如0 xbb,0 x3d等。(4)二進(jìn)制整數(shù)。由0-1的數(shù)字組成,在Python中表示該數(shù)為二進(jìn)制時需在數(shù)字前面加0b或0B,如0b0,0b10等。第二章

7、數(shù)據(jù)類型of31122.2.2 浮點(diǎn)數(shù)類型2.2 數(shù)據(jù)類型申明及基本運(yùn)算Python中的浮點(diǎn)數(shù)有2種表示形式:十進(jìn)制表示和科學(xué)計(jì)數(shù)法表示。十進(jìn)制表示法與數(shù)學(xué)中的實(shí)數(shù)表示法一致。如:.1、1.1、0.1、1.0等都是合法的表示方法。1.1*10-2的科學(xué)計(jì)數(shù)法為1.1e-2或1.1E-2,e或E表示以10為底,后跟10的冪次方,其值為0.011。第二章 數(shù)據(jù)類型of31132.2.3 復(fù)數(shù)類型2.2 數(shù)據(jù)類型申明及基本運(yùn)算Python中的復(fù)數(shù)類型表示數(shù)學(xué)中的復(fù)數(shù)。復(fù)數(shù)分為實(shí)部和虛部,其中虛部通過j或J來表示。如:12.5+5j或者12.5+5J。復(fù)數(shù)的實(shí)部和虛部都是浮點(diǎn)類型。對于復(fù)數(shù)z,可以用z

8、.real和z.imag來分別獲得它的實(shí)數(shù)部分和虛數(shù)部分。例: z = 3.4 + 5.2Jtype(z)z.real z.imag第二章 數(shù)據(jù)類型of31142.2.4 數(shù)字運(yùn)算符2.2 數(shù)據(jù)類型申明及基本運(yùn)算變量被賦值為數(shù)字類型后,可以進(jìn)行數(shù)學(xué)中的加減乘除等各種運(yùn)算。Python提供大部分常用的算術(shù)運(yùn)算符,如加、減、乘、除等等。表2-1給出了常見的算術(shù)運(yùn)算符。表2-1 常用算術(shù)運(yùn)算符運(yùn)算符描述+加法。對符號左右兩個數(shù)進(jìn)行加法運(yùn)算-減法。對符號左右兩個數(shù)進(jìn)行減法運(yùn)算*乘法。對符號左右兩個數(shù)進(jìn)行乘法運(yùn)算/除法。對符號左右兩個數(shù)進(jìn)行除法運(yùn)算%取模。取符號左邊數(shù)除以右邊數(shù)的余數(shù),注意:是整除后的余

9、數(shù)*冪。符號左邊為底數(shù),右邊為指數(shù)進(jìn)行冪運(yùn)算/取整。取符號左邊數(shù)除以右邊數(shù)的整數(shù)部分第二章 數(shù)據(jù)類型of31152.2.4 數(shù)字運(yùn)算符2.2 數(shù)據(jù)類型申明及基本運(yùn)算運(yùn)算符運(yùn)算的結(jié)果可能會改變數(shù)字類型,3種數(shù)字類型之間存在一種逐漸擴(kuò)展的關(guān)系,具體如下:整數(shù)浮點(diǎn)數(shù)復(fù)數(shù)例如:5 + 3.0/35/3 4.52 + (3.15 + 2.36j)第二章 數(shù)據(jù)類型of31162.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算 1內(nèi)置的數(shù)字運(yùn)算函數(shù)Python提供了一些內(nèi)置函數(shù)來完成特定的操作,與數(shù)字類型相關(guān)的內(nèi)置函數(shù)見表2-2所示。表2-2 內(nèi)置的數(shù)字運(yùn)算函數(shù)函數(shù)描述abs(x)絕對

10、值函數(shù)。返回x的絕對值divmod(x,y)商余函數(shù)。返回元組類型數(shù)據(jù)(x/y, x%y)pow(x,y,z)冪次方函數(shù)。如果省略第三參數(shù),則返回x*y,否則,返回(x*y)%zround(x,n)四舍五入函數(shù)。對x進(jìn)行四舍五入,保留n為小數(shù)max(x1,x2,.,xn)最大值函數(shù)。返回給定參數(shù)中值最大者min(x1,x2,.,xn)最小值函數(shù)。返回給定參數(shù)中值最小者第二章 數(shù)據(jù)類型of31172.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算math庫是Python內(nèi)置的標(biāo)準(zhǔn)庫,導(dǎo)入math庫的3種方法:(1) import math采用這種形式導(dǎo)入math庫后,對ma

11、th庫中函數(shù)的調(diào)用方式為:math.()。 import math math. ceil(3.15)2math庫第二章 數(shù)據(jù)類型of31182.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算(2) import math as math庫中函數(shù)的調(diào)用方式為:math.()。 import math as mtmt.floor(3.15)(3) from math import *math庫中函數(shù)的調(diào)用方式為:()。 from math import * floor(3.15)在math庫中有很多寫好的函數(shù)或者稱之為方法,可以用它來執(zhí)行一些常見操作。第二章 數(shù)據(jù)類型of31

12、192.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算math庫包括數(shù)學(xué)常數(shù)(表2-3)、數(shù)值函數(shù)(表2-4)、冪對數(shù)函數(shù)(表2-5)等,更多內(nèi)容請查閱相關(guān)文獻(xiàn)。函數(shù)描述math.pi圓周率。值為3.141592653589793math.e自然對數(shù)。值為2.718281828459045math.inf正無窮大,負(fù)無窮大為-math.infmath.nan非浮點(diǎn)數(shù)標(biāo)記,NaN(Not a Number)表2-3 math庫的數(shù)學(xué)常數(shù)第二章 數(shù)據(jù)類型of31202.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算函數(shù)描述math.fab(x)絕對值函數(shù)

13、。返回x的絕對值math.fmod(x,y)模函數(shù)。返回x與y的模,即余數(shù)math.ceil(x)向上取整函數(shù)。返回不小于x的最小整數(shù)math.floor(x)向下取整函數(shù)。返回不大于x的最大整數(shù)math.trunc(x)取整函數(shù)。返回x的整數(shù)部分math.gcd(x,y)最大公約數(shù)函數(shù)。返回x與y的最大公約數(shù)表2-4 math庫的數(shù)值函數(shù)第二章 數(shù)據(jù)類型of31212.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算表2-5 math庫的冪對函數(shù)函數(shù)描述math.pow(x,y)返回x 的y次冪math.exp(x)返回e的x次冪,e是自然對數(shù)math.expml(x)返

14、回e的x次冪減1math.log(x,base)非浮點(diǎn)數(shù)標(biāo)記,NaN(Not a Number)math.log1p(x)返回x的對數(shù),只輸入x時,返回自然對數(shù),即lnxmath.log2(x)返回1+x的自然對數(shù)math.log10(x)返回x的2對數(shù)值math.log(x,base)返回x的10對數(shù)值第二章 數(shù)據(jù)類型of31222.2.5 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算函數(shù)描述int(x)將x轉(zhuǎn)換為整數(shù),x可以是浮點(diǎn)數(shù)或字符串float(x)將x轉(zhuǎn)換為浮點(diǎn)數(shù),x可以是整數(shù)或字符串complex(re,im)生成一個復(fù)數(shù),實(shí)部為re,虛部為im,re可以使整數(shù)、

15、浮點(diǎn)數(shù)或字符串,im可以是整數(shù)或浮點(diǎn)數(shù),但不能為字符串表2-6 內(nèi)置的數(shù)字轉(zhuǎn)換函數(shù)Python中有關(guān)數(shù)值類型轉(zhuǎn)換的函數(shù)見表2-6.第二章 數(shù)據(jù)類型of31232.2.6 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算Python是一個強(qiáng)類型的語言,類型很重要,兩個不同類型的數(shù)據(jù)相加的時候,需要轉(zhuǎn)換其中的一個類型,比如將帶引號的3變成一個真正的十進(jìn)制的整型數(shù)字,可以寫成: 5 + int(3)轉(zhuǎn)換的工作交給一個內(nèi)置函數(shù)“int”來完成,內(nèi)置函數(shù)就是Python中已經(jīng)內(nèi)置好的,不需要額外的引入一些對象或者是模塊或者是包就可以使用的函數(shù)。Python中有關(guān)數(shù)值類型轉(zhuǎn)換的函數(shù)見下表.函數(shù)

16、描述int(x)將x轉(zhuǎn)換為整數(shù),x可以是浮點(diǎn)數(shù)或字符串float(x)將x轉(zhuǎn)換為浮點(diǎn)數(shù),x可以是整數(shù)或字符串complex(re,im)生成一個復(fù)數(shù),實(shí)部為re,虛部為im,re可以使整數(shù)、浮點(diǎn)數(shù)或字符串,im可以是整數(shù)或浮點(diǎn)數(shù),但不能為字符串第二章 數(shù)據(jù)類型of31242.2.6 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算5 + int(1011, 2) #參數(shù)2表示前面的數(shù)值是一個二進(jìn)制數(shù)之前在申明的時候是通過加一個前綴來區(qū)別數(shù)的進(jìn)制,現(xiàn)在轉(zhuǎn)換的時候可以再加一個參數(shù)來告訴系統(tǒng),前面這個字符串的值它是基于二進(jìn)制的。以此類推,我們也可以轉(zhuǎn)換八進(jìn)制或者十六進(jìn)制數(shù)。int(177

17、, 8) #參數(shù)8表示前面的數(shù)值是一個八進(jìn)制數(shù) int(9ff, 16) #參數(shù)16表示前面的數(shù)值是一個十六進(jìn)制數(shù)第二章 數(shù)據(jù)類型of31252.2.6 數(shù)字類型的常用函數(shù)及math庫2.2 數(shù)據(jù)類型申明及基本運(yùn)算有關(guān)complex( )函數(shù)的實(shí)例:complex(3.14)complex(3.14,5.2) a = 3.14 b = 5.12 complex(a,b)第二章 數(shù)據(jù)類型of31262.2.7 浮點(diǎn)型精度處理2.2 數(shù)據(jù)類型申明及基本運(yùn)算下面是一個有關(guān)浮點(diǎn)型數(shù)字計(jì)算的簡單表達(dá)式。0.1 + 0.1 + 0.1 - 0.3盡管結(jié)果非常接近于0,但它不是0。這在精度要求非常高的金融或

18、者財(cái)務(wù)領(lǐng)域是不能容忍的,因?yàn)橐稽c(diǎn)點(diǎn)誤差都不能有。造成這個問題的的本質(zhì)原因在于,計(jì)算機(jī)內(nèi)部的二進(jìn)制存儲機(jī)制本身就沒辦法存儲某些特定的數(shù)值,但是在精度要求非常高的科學(xué)計(jì)算或者是金融財(cái)務(wù)領(lǐng)域,又不允許出現(xiàn)絲毫的誤差,那該如何解決這個問題呢?第二章 數(shù)據(jù)類型of31272.2.7 浮點(diǎn)型精度處理2.2 數(shù)據(jù)類型申明及基本運(yùn)算Python提供了一個專門的模塊“decimal”來解決有關(guān)浮點(diǎn)數(shù)的精度問題。通過“decimal” 模塊下的類“Decimal”(注意第一個字母大寫),提供了一種精度更高的處理浮點(diǎn)型數(shù)字的機(jī)制。 import decimal #導(dǎo)入模塊decimaldecimal.Decimal

19、(0.1) + decimal.Decimal(0.1) + decimal.Decimal(0.1) -decimal.Decimal(0.3) #調(diào)用decimal模塊的類Decimal來處理浮點(diǎn)型數(shù)字注意:這里是將字符串0.1作為參數(shù)傳遞給decimal 模塊的“Decimal類的構(gòu)造函數(shù),實(shí)際使用時經(jīng)常會犯錯,漏掉了0.1兩邊的引號。第二章 數(shù)據(jù)類型of31282.2.7 浮點(diǎn)型精度處理2.2 數(shù)據(jù)類型申明及基本運(yùn)算 import decimal x = decimal.Decimal(0.1) + decimal.Decimal(0.1) + decimal.Decimal(0.1)

20、 -decimal.Decimal(0.3)type(x)print(x) z = str(x)type(z) print(z)第二章 數(shù)據(jù)類型of31292.2.7 浮點(diǎn)型精度處理2.2 數(shù)據(jù)類型申明及基本運(yùn)算“import decimal”導(dǎo)入模塊的方式,在使用“decimal” 模塊的每一個類時都要帶上前綴“decimal.”,這種方式有點(diǎn)繁瑣,可以如下方式來導(dǎo)入,從而可以有一種簡化的表示方式: from decimal import Decimal x = Decimal(0.1) + Decimal(0.3)print(x)其中from decimal import decimal表

21、示從“decimal” 模塊導(dǎo)入“Decimal” 這個類。其語法為:from 模塊名 import 模塊里的類第二章 數(shù)據(jù)類型of31302.2.7 浮點(diǎn)型精度處理2.2 數(shù)據(jù)類型申明及基本運(yùn)算注意:浮點(diǎn)型的存儲是有缺陷的,所以在精度要求更高的場合,可以使用“decimal” 模塊的“Decimal”類來實(shí)現(xiàn)。但要注意:使用“decimal” 模塊的“Decimal”類傳參數(shù)時一定是以字符串的形式進(jìn)行傳參。否則,如果直接傳一個浮點(diǎn)型,它不會報(bào)錯,但得不到我們想要的結(jié)果。Decimal(0.1) + Decimal(0.3) Decimal(0.1) + Decimal(0.1) + Deci

22、mal(0.1) - Decimal(0.3)2.7字典習(xí)題of56312.8字符串第二章數(shù)據(jù)類型2.3 列表第二章 數(shù)據(jù)類型of31322.3.1 列表基本特征序列描述了數(shù)據(jù)類型的一種形態(tài),具體的數(shù)據(jù)類型有很多,包括列表、元組、字符串,這些都屬于序列類型。從它的特性上來講可以分為兩類,一類是可變序列,一類是不可變序列。可變序列:指的是序列中的某個元素支持在原位置被改變。不可變序列:是不允許在原位值改變某個元素或者對象的值。列表可以說是Python語言中使用頻率最高的一個有序序列(這里的有序指的是先后順序而不是大小順序?。5诙?數(shù)據(jù)類型of31332.3.1 列表基本特征2.3 列表1.

23、列表的定義列表(list):是可以包含任意對象的有序集合(可以包含類型統(tǒng)一的整數(shù),也可以包含不同類型的如串、元組、字典、自己定義的類的實(shí)例等等,并且它是有序的,順序是可以自定義的)。2. 列表的申明列表用一對中括號來申明,中括號里寫上多個元素,中間以逗號隔開,逗號是默認(rèn)的分隔符,這些元素可以是任意類型的數(shù)據(jù)。第二章 數(shù)據(jù)類型of31342.3.1 列表基本特征2.3 列表score = 80 #定義一個變量來表示一個學(xué)生一門課程的成績scores = 80,90,88,90.3 #定義一個列表來表示一個學(xué)生多門課程的成績type(scores) #列表的類型是“l(fā)ist”print(score

24、s)第二章 數(shù)據(jù)類型of31352.3.1 列表基本特征2.3 列表3. 列表(list)的特性列表具有以下特性:(1)可以包含任意對象的有序集合。如:x = 89, 90.3, tom(2)可以通過下標(biāo)索引來訪問list中的某個元素。下標(biāo)索引從左邊開始總是從0開始,也可以從右邊開始,那就是從-1開始。圖2-1 序列類型的索引體系第二章 數(shù)據(jù)類型of31362.3.1 列表基本特征2.3 列表(3)可變長度,異質(zhì),任意嵌套(可任意增減、可包含任意類型的元素,可任意嵌套指的是列表的元素又可以是一個列表)。(4)支持原位改變。 x = 188,90.3,Tom,56,89,89print(x) x

25、0 = 77xx3 #元素x3是一個列表 x30第二章 數(shù)據(jù)類型of31372.3.1 列表基本特征2.3 列表4. 列表轉(zhuǎn)換函數(shù)list( )通過列表轉(zhuǎn)換函數(shù)list( )可以將某個特定的可迭代序列轉(zhuǎn)換為列表。 ls = list(range(1,6) #將序列轉(zhuǎn)換為列表ls lt = list(python) lt第二章 數(shù)據(jù)類型of31382.3.2 序列通用操作2.3 列表1. 列表的初始化列表用中括號將若干元素括起來,中間用逗號分隔。 ls= 1,2,32. 序列的通用操作以list為例序列的通用操作包括判斷元素是否在序列之內(nèi)、序列連接、重復(fù)序列元素等。第二章 數(shù)據(jù)類型of31392

26、.3.2 序列通用操作2.3 列表函數(shù)描述x in ls如果x是ls的元素,則返回True,否則返回Falsex not in ls如果x不是ls的元素,則返回True,否則返回Falsels + lt連接序列l(wèi)s和lt,“+”連接操作不會改變兩個操作對象ls和lt本身的值ls * n或 n * ls將序列l(wèi)s中的元素重復(fù)n次形成一個新的序列,原序列l(wèi)s并沒有改變lsi通過下標(biāo)索引的方式來獲取序列元素lsilsi:j獲取i, j-1范圍的元素。ls:j獲取0, j-1范圍的元素;lsi:獲取從i開始的所有元素;ls:獲取所有的元素。注意:獲取列表元素的值時,下標(biāo)不能越界!lsi:j:k 按一定

27、的步長來訪問指定索引范圍,其中i、j分別是起始、終止位置,k是步長len(ls)獲取序列長度,即序列中元素個數(shù)min(ls)獲取序列最小值,但要求序列l(wèi)s中的元素必須是可以比較大小的max(ls)獲取序列最大值,但要求序列l(wèi)s中的元素必須是可以比較大小的sum(ls)統(tǒng)計(jì)序列元素的總和,如果元素中有非數(shù)值類型的數(shù)據(jù),則不能求和!ls.index(x,i,j)返回元素x在序列l(wèi)s中i, j-1范圍內(nèi)第一次出現(xiàn)的下標(biāo)索引位置,如果不在序列中則出錯ls.count(x)統(tǒng)計(jì)元素x出現(xiàn)在序列s中的次數(shù)第二章 數(shù)據(jù)類型of31402.3.2 序列通用操作2.3 列表兩點(diǎn)說明:(1)切片操作 x = 1,

28、2,3,4,5,6x2:5:2x:2 x:-1 #得到置逆的結(jié)果,但注意:x的值并未改變! x x-5:-1:2第二章 數(shù)據(jù)類型of31412.3.2 序列通用操作2.3 列表 names = Tom, Peter, Jerry, Mike names0:2 names0:4 names4注意:獲取列表元素的值時,下標(biāo)不能越界!第二章 數(shù)據(jù)類型of31422.3.2 序列通用操作2.3 列表下標(biāo)索引的使用也可以從后往前即從-1開始,但當(dāng)有兩個下標(biāo)索引時,同樣最后一個索引對象的值不包含在內(nèi)。如下: names = Tom, Peter, Jerry, Mike names-1 names-4:-

29、1 names-4: #省略第2下標(biāo),截取到后面所有的,但請注意,這里是從右往左進(jìn)行截取第二章 數(shù)據(jù)類型of31432.3.2 序列通用操作2.3 列表(3)求和操作sum(ls) x = 1,7,3,0,3,9 sum(x) ls = 1,4,9,Tom, 4,7,5 #元素有非數(shù)值類型的數(shù)據(jù),不能求和! sum(ls)第二章 數(shù)據(jù)類型of31442.3.2 序列通用操作2.3 列表 ts = Tom, Peter #元素是字符串,不能求和! sum(ts) 第二章 數(shù)據(jù)類型of31452.3.3 可變序列及列表通用操作(一)2.3 列表前面以list列表為例所介紹的通用操作,既可以使用在列

30、表上,列表是一可變序列,但這些操作它同樣適用于不可變序列。下面將繼續(xù)以list為例,來介紹可變序列的通用操作。這些操作既可以作用到list列表上,也可以作用到其它可變序列的數(shù)據(jù)結(jié)構(gòu)上。下表列出了可變序列及列表的通用操作。第二章 數(shù)據(jù)類型of31462.3.3 可變序列及列表通用操作(一)2.3 列表函數(shù)描述lsi = x原位修改。修改ls中指定下標(biāo)索引對應(yīng)元素的值為xlsi:j = lt用可迭代序列l(wèi)t中的元素替換ls中i, j-1范圍內(nèi)的元素。lt中元素個數(shù)可以多于也可以少于ls中要被替換掉的元素個數(shù),此時原列表的長度會發(fā)生變化lsi:j:k = lt用可迭代序列l(wèi)t中的元素替換ls中i,

31、j-1范圍內(nèi)的元素。注意:這里要求lt的大小和ls中被置換的元素個數(shù)要保持一致。lsi:j = lt 和 lsi:j:k = lt的操作是有差異的!del lsi刪除列表ls中指定的元素del lsi:j刪除列表ls中i, j-1范圍的元素,等價于 lsi:j = del lsi:j:k 按步長k來刪除列表ls中i, j-1范圍的元素ls += lt或 ls.extend(lt)將可迭代序列l(wèi)t中的元素逐個追加到列表ls的末尾處ls *= n更新列表ls,將列表ls中的元素重復(fù)n次ls.remove(x)移除列表中指定的元素,當(dāng)列表中有多個值相同的元素時,remove方法刪除的是值相同的第1個

32、元素。必須指明要移除的元素,該方法無返回值ls.clear( )清空列表,即刪除列表中所有的元素。實(shí)施該操作后,列表ls為空,等價于ls = ls.append(x)在列表ls末尾追加一個元素x。說明:x作為一個對象進(jìn)行追加。一次只能追加一個元素,那怕x是一個列表,也只能作為一個整體進(jìn)行追加。ls.insert(i, x)在指定下標(biāo)位置處插入元素x第二章 數(shù)據(jù)類型of31472.3.3 可變序列及列表通用操作(一)2.3 列表 s = 99,2,3,4,5,6,7,8,9,10 s:3 = 100 #原本希望將列表s的前三個元素替換成100,但這種使用方法是錯誤的! s:3 = 98,97,9

33、6 #用一個新的列表替換列表s中的前三個元素 ss:3 = 100是不被允許的。因?yàn)檫@里有歧義,究竟是希望把前三個值刪掉,然后插入一個100呢?還是要把前三個值每個都換成100?不能確定,因此,系統(tǒng)拒絕這樣的操作。第二章 數(shù)據(jù)類型of31482.3.3 可變序列及列表通用操作(一)2.3 列表 l= 1,2,3,4,5,6,7,8,9,10 l:2 = 99 #要求右邊必須是可迭代序列,因此會報(bào)錯 l:2 = 99 #試圖指定一個大小為1的序列,但要求的大小必須為5 l:2 = 99,99,99,99,99 l第二章 數(shù)據(jù)類型of31492.3.4 可變序列及列表通用操作(二)2.3 列表函數(shù)

34、描述ls.pop(i)pop( )操作有返回值。檢索并刪除特定元素,pop操作會彈出一個值并刪除該值。省略i,返回并刪除最后一個元素值ls.reverse( )反轉(zhuǎn)序列。反轉(zhuǎn)操作只影響序列l(wèi)s自己,它并不返回新值ls.copy( )復(fù)制序列。復(fù)制序列將產(chǎn)生一個真實(shí)的拷貝 說明:復(fù)制序列.copy()是一個非常重要的操作。第二章 數(shù)據(jù)類型of31502.3.4 可變序列及列表通用操作(二)2.3 列表將一個列表賦值給另一個列表不會產(chǎn)生新的列表對象。例如: l = 0,1,2,3,4,5,6,7,8,9,10 s = l #將序列l(wèi)復(fù)制給s s0 = -99 #改變序列s中元素的值 s l #發(fā)現(xiàn)

35、原序列l(wèi)中對應(yīng)元素的值也被修改了以上操作表明s和l它們兩個關(guān)聯(lián)的是同一個對象,這其實(shí)就是共享引用。 s is l說明:全局函數(shù)id( )也能檢測兩個對象是否是共享引用。第二章 數(shù)據(jù)類型of31512.3.4 可變序列及列表通用操作(二)2.3 列表解決產(chǎn)生新的列表的兩種方法:方法一:利用切片操作取出列表的所有元素賦值給新的變量。 l = 0,1,2,3,4,5,6,7,8,9,10 s = l: #把l的所有值取出來賦值給s s s0 = -99 s l第二章 數(shù)據(jù)類型of31522.3.4 可變序列及列表通用操作(二)2.3 列表方法二:利用列表的方法“copy( )”拷貝列表的所有元素到新

36、的變量。 l = 0,1,2,3,4,5,6,7,8,9,10 x = l.copy() x x-1 = 101 xl注意:關(guān)于這一點(diǎn)很容易出錯,請一定弄清楚。正確理解第二章講到的賦值邏輯。第二章 數(shù)據(jù)類型of31532.3.4 可變序列及列表通用操作(二)2.3 列表列表所特有的一個操作“.sort( )”方法。函數(shù)描述ls.sort(reverse=False )排序操作。默認(rèn)按照從小到大進(jìn)行排序,但設(shè)置reverse=True得到降序排列sorted(ls )全局排序函數(shù)。默認(rèn)返回升序,但并不改變原序列l(wèi)s第二章 數(shù)據(jù)類型of31542.3.4 可變序列及列表通用操作(二)2.3 列表幾

37、點(diǎn)說明:(1)要求序列中的元素必須具有相同的類型ls = 1,3,gh, 66, 8,9 ls.sort() #必須是相同類型的數(shù)據(jù)才能進(jìn)行排序 sorted(ls) #要求序列中的元素具有相同的數(shù)據(jù)類型才能排序若一個列表含有數(shù)值、字符串等混合類型,則不能進(jìn)行排序操作。第二章 數(shù)據(jù)類型of31552.3.4 可變序列及列表通用操作(二)2.3 列表(2)方法“sort()”和全局函數(shù)“sorted()”的區(qū)別 lst = 11,3,18,9 lst.sort() #沒有結(jié)果返回,但對lst進(jìn)行了排序 lst lst = 11,3,18,9 sorted(lst) #全局函數(shù),有結(jié)果返回,但請注

38、意:lst本身沒有被改變! lst“sort( )”方法沒有結(jié)果返回,只是改變原序列的排列順序。sorted()是全局函數(shù),有結(jié)果返回!但原序列本身未改變!同時,全局函數(shù)不依附于任何的對象,因此,必須把序列以參數(shù)的形式傳遞給它。第二章 數(shù)據(jù)類型of31562.3.4 可變序列及列表通用操作(二)2.3 列表(3)方法“sort( )”和全局函數(shù)sorted( )的使用示例 people = Mike, Tom, John, Peter, Jerry sorted(people, key=lambda n:n1) #按第二個字母進(jìn)行排序 people = Mike, Tom, John, Pet

39、er, Jerry people.sort(key=lambda x:x0) people2.3列表2.7字典習(xí)題of56572.8字符串第二章數(shù)據(jù)類型2.4 元組第二章 數(shù)據(jù)類型of3158Python中另外一個比較常用的數(shù)據(jù)結(jié)構(gòu)叫做“元組”,又稱之為“tuple”,它是屬于序列里面的不可變序列。1. tuple元組的基本特性tuple是序列中的不可變序列, tuple元組是“可以包含任意對象的有序集合”。元組具有以下特性:(1)tuple元組是包含任意對象的有序集合。(2)通過下標(biāo)索引(位置偏移)訪問元素。(3)固定長度(list是可變長度)、異質(zhì)、可任意嵌套。(4)對象引用數(shù)組。2.4

40、元組第二章 數(shù)據(jù)類型of31592. 元組的申明元組tuple可以使用一個圓括號來進(jìn)行申明。(1)空元組的申明 tp = () #空元組 type(tp) tp2.4 元組第二章 數(shù)據(jù)類型of3160(3)申明元組時可以省略小括號(但不建議這樣做) t2 = 1,2,3 #省略申明元組時的小括號,但不建議這樣使用 t2 type(t2)(4)申明元組的同時將其元素賦值給相應(yīng)的變量 x,y = (3,4) x y強(qiáng)調(diào):對只含一個元素的元組進(jìn)行申明時,末尾的“,”不能省略!2.4 元組第二章 數(shù)據(jù)類型of31613. 元組轉(zhuǎn)換函數(shù)tuple( )可以將某個特定的可迭代序列轉(zhuǎn)換為元組。假定有函數(shù)“r

41、ange( )”生成了一個序列,可以通過轉(zhuǎn)換函數(shù)“tuple( )”將它轉(zhuǎn)換為一個元組。 tp = tuple(range(1,6) #將序列轉(zhuǎn)換為元組 tp“range(1,6)”產(chǎn)生的是一個可迭代的序列,其值是:1,2,3,4,5,注意不包含值6。2.4 元組第二章 數(shù)據(jù)類型of31624. 元組的常用操作 對元組元素的訪問操作,仍然是通過下標(biāo)索引來進(jìn)行訪問。也可以進(jìn)行一定范圍的訪問,即通過范圍進(jìn)行訪問。由于元組也是序列類型,因此,元組支持序列類型的通用操作,如判斷元素是否在序列之內(nèi)、連接序列、重復(fù)序列元素、下標(biāo)獲取元素、訪問指定索引范圍、按步長訪問指定索引范圍、獲取序列長度、獲取最小值、

42、獲取最大值、求和(必須是數(shù)值型數(shù)據(jù))等都可以用在元組上。但不支持可變序列及列表的通用操作,因?yàn)樗胁豢勺兊奶匦裕丛M不支持原位改變,也不支持?jǐn)U展操作。如: tp = (1,2,3,4,5)tp0 = 992.4 元組第二章 數(shù)據(jù)類型of3163但以下操作是允許的: tp2 tp20 = 99 tp這里,由于元組元素tp2是一個列表,因此,可以對其進(jìn)行修改,但如果元素又是一個元組,則仍然不允許修改。相對于列表而言,元組少了很多操作。在實(shí)際開發(fā)過程中,如果我們確定不需要原位改變的這種情況用元組就比用列表更合適,能一定程度的保證數(shù)據(jù)的安全。2.4 元組第二章 數(shù)據(jù)類型of31645. 使用tupl

43、e的好處tuple比list操作速度快,利用元組存儲數(shù)據(jù),可以對不需要修改的數(shù)據(jù)進(jìn)行“寫保護(hù)”,使得代碼更安全。下面是 tuple轉(zhuǎn)換成list的代碼實(shí)例。x_tuple = (1,2,3) y_list = list(x_tuple) #元組到列表的轉(zhuǎn)換 print(y_list)type(y_list)2.3列表2.7字典習(xí)題of56652.8字符串第二章數(shù)據(jù)類型2.5 range第二章 數(shù)據(jù)類型of3166range的本質(zhì)range()是Python的一個內(nèi)置函數(shù),也是Python中的另外一個不可變序列。調(diào)用range()函數(shù),可以生成一個數(shù)值序列。盡管它是一個一般的函數(shù),但它也是有類型

44、的,它的類型是“range”。比如我們想在屏幕上打印5次“Hello world !”,代碼如下: for i in range(5): print(Hello world!)range(5) 生成一個包含5個元素的序列,這5個元素是從0到4,注意不包含5。2.5 range第二章 數(shù)據(jù)類型of3167如果要使用遍歷過程中變量i的值,可以這樣使用: for i in range(5): #通過str函數(shù)將數(shù)值類型數(shù)據(jù)轉(zhuǎn)換成字符型,然后進(jìn)行“+”連接操作 print(Hello world + str(i) + !) #通過str()將數(shù)值類型數(shù)據(jù)轉(zhuǎn)換成字符型2.5 range第二章 數(shù)據(jù)類型o

45、f3168 r = range(5) #得到04的元素構(gòu)成的序列,不包含元素5 rtype(r)range函數(shù)的結(jié)果雖然不像list和tuple那么直觀,但仍然可以檢測它的類型,它是“range”類型的,“range”類型屬于序列的不可變類型。與list和tuple一樣,可以通過它的下標(biāo)來訪問它的元素的值,但它不支持原位改變。 r0 #可以訪問它的元素 r-1 r0 = 99 #不能改變它的值,它不支持原位改變2.5 range第二章 數(shù)據(jù)類型of31692. range的申明“range”的申明有三種方式。請見表2-11。函數(shù)描述range(j)得到0, j-1范圍的整數(shù)序列,不包含整數(shù)jr

46、ange(i,j)得到i, j-1范圍的整數(shù)序列,不包含整數(shù)jrange(i,j,k)按步長k遞增得到i, j-1范圍的整數(shù)序列,不包含整數(shù)j2.5 range第二章 數(shù)據(jù)類型of3170 r = range(1,20,3) #第三個參數(shù)表示步長值 r for i in r: print(i)“range(1,10,3)”得到的是1到9的3個值。即從1開始,按步長3遞增,直到10,但不包括10。2.5 range第二章 數(shù)據(jù)類型of31713. range支持序列的通用操作range()比較簡單,它不支持像列表一樣的原位操作,但序列的通用操作都適用于它,如判斷元素是否在序列之內(nèi)、求最大最小值、

47、求長度、檢索某一個元素的位置,統(tǒng)計(jì)元素出現(xiàn)的次數(shù)等等。2.3列表2.7字典習(xí)題of56722.8字符串第二章數(shù)據(jù)類型2.6 哈希運(yùn)算第二章 數(shù)據(jù)類型of3173前面介紹了可變序列類型列表和不可變序列類型元組以及range范圍,后面還會學(xué)習(xí)到更多的可變類型和不可變類型。Python界定一個數(shù)據(jù)類型是否可變主要是通過考察該類型數(shù)據(jù)是否能夠進(jìn)行哈希運(yùn)算。能夠進(jìn)行哈希運(yùn)算的類型認(rèn)為是固定類型,否則認(rèn)為是可變類型。哈希運(yùn)算可以將任意長度的二進(jìn)制值映射為較短的固定長度的二進(jìn)制值,這個小的二進(jìn)制值稱為哈希值。哈希值是對數(shù)據(jù)的一種有損且緊湊的表示形式。Python提供了一個內(nèi)置的哈希運(yùn)算函數(shù)hash( ),它

48、可以對固定數(shù)據(jù)類型產(chǎn)生一個哈希值。2.6 哈希運(yùn)算第二章 數(shù)據(jù)類型of3174 hash(python) hash(1,2,3,ok) hash(1,2,3) hash(1,2,ok,4,5)說明:每次啟動idle調(diào)用hash( )函數(shù)即使對同一個數(shù)據(jù)進(jìn)行哈希運(yùn)算,哈希的結(jié)果也可能不同。2.3列表習(xí)題of56752.8字符串第二章數(shù)據(jù)類型第二章 數(shù)據(jù)類型of31762.7.1 字典概述及聲明2.7 字典字典,屬于核心數(shù)據(jù)類型-映射。字典可以說是在Python中除了list列表之外使用頻率最高的一個數(shù)據(jù)類型。字典(dictionary)是由鍵值對(key:value) 構(gòu)成的集合,它的應(yīng)用場景非

49、常廣泛。當(dāng)我們要保存一對一對的信息,如要將一個鍵和一個對應(yīng)值添加到一個大的數(shù)據(jù)結(jié)構(gòu)里面,在這種情況下就非常適合使用字典。例如我們想建立一個電話號碼本,人名就可以當(dāng)做是一個鍵(key),每一個電話號碼就可以是這個鍵(人名)所對應(yīng)的值(value)。第二章 數(shù)據(jù)類型of31772.7.1 字典概述及聲明2.7 字典1. 字典的特性(1)通過?。╧ey)而非下標(biāo)索引(位置偏移)訪問數(shù)據(jù)字典的數(shù)據(jù)訪問不是通過下標(biāo)索引,而是通過它的鍵來訪問,這里的鍵叫做“key”,它所存儲的值叫做“value”,所以說它的存儲結(jié)構(gòu)基本上就是一個鍵一個值,就是平時我們所說的鍵值對。(2)可包含任意對象的無序集合在默認(rèn)的字

50、典表里,它里邊的元素是無序的,創(chuàng)建字典時的順序和呈現(xiàn)時的順序可能會不一樣。 dt = name:Tom, number:201505160021, age:20 dt第二章 數(shù)據(jù)類型of31782.7.1 字典概述及聲明2.7 字典(3)可變長度、異質(zhì)、可以任意嵌套(4)屬于可變映射分類在映射里,字典屬于可變映射分類。(5)對象引用表(Hash Table)字典的存儲本質(zhì)是一個對象引用的表,它的存儲機(jī)制就是平時所說的哈希表。第二章 數(shù)據(jù)類型of31792.7.1 字典概述及聲明2.7 字典2. 創(chuàng)建字典的方法Python中的字典用大括號表示,注意每個項(xiàng)目的鍵和對應(yīng)值之間用冒號分隔,冒號“:”左

51、邊是鍵,右邊是對應(yīng)值;每個項(xiàng)目之間用“,”分隔。在同一個字典中,可以包含多種不同類型的數(shù)據(jù)。(1)創(chuàng)建一個空字典 d = d type(d)第二章 數(shù)據(jù)類型of31802.7.1 字典概述及聲明2.7 字典(2)創(chuàng)建包含若干元素的字典表key:value用花括號來表示字典表,將我們所關(guān)注的信息的標(biāo)簽和實(shí)際的值用鍵值對的方式來進(jìn)行存儲。第二章 數(shù)據(jù)類型of31812.7.1 字典概述及聲明2.7 字典(2)創(chuàng)建包含若干元素的字典表key:value用花括號來表示字典表,將我們所關(guān)注的信息的標(biāo)簽和實(shí)際的值用鍵值對的方式來進(jìn)行存儲。 std = name:Tom,number:20150516021

52、,age:19,native place:重慶 type(std) std鍵和對應(yīng)值之間用冒號來加以分隔,稱為鍵值對。第二章 數(shù)據(jù)類型of31822.7.1 字典概述及聲明2.7 字典 dct = name:Tom, 3:20150516021 #鍵是整數(shù)也是可以的,但沒有什么意義 dct dct3 = name:Tom, num,3:20150516021 #字典的鍵不能是列表,因?yàn)樗强勺冃蛄凶⒁猓鹤值涞逆I只能是不可變的元素。雖然從語法上來說,整數(shù)、小數(shù)、元組,只要是不可變的元素都是可以作為鍵的,但實(shí)際開發(fā)的時候鍵是有實(shí)際意義的,代表具體的要存儲的信息。第二章 數(shù)據(jù)類型of31832.7.

53、1 字典概述及聲明2.7 字典3. 類型轉(zhuǎn)換dict()函數(shù)在字典表里有一個叫dict()的函數(shù),它能夠?qū)?shù)中指定的信息轉(zhuǎn)換為字典表的數(shù)據(jù)結(jié)構(gòu)。其語法如下:dict(key=value)注意:括號里參數(shù)的形式和一般函數(shù)參數(shù)傳入的方式不同,是以關(guān)鍵字參數(shù)形式進(jìn)行傳參。#以函數(shù)形式定義字典表時,鍵不加引號,但輸出時是加了引號的 book = dict(title=Python入門, author=Tom, price=59.9) book第二章 數(shù)據(jù)類型of31842.7.1 字典概述及聲明2.7 字典注意:在用dict( )函數(shù)申明字典表的方式中,以參數(shù)等于值(key=value)的形式呈現(xiàn),

54、參數(shù)在寫的時候不要加上引號(即字符串),但不加引號申明的鍵它默認(rèn)會加上一個引號。即它以字符串的類型來轉(zhuǎn)換你輸入的鍵。但是請注意這種申明方式時鍵不能是整數(shù)、浮點(diǎn)數(shù)、元組以及列表。實(shí)際上,使用“dict( )”函數(shù)的形式來申明字典表,還有更多更靈活的方式:比如將一個列表轉(zhuǎn)換為一個字典表。注意:列表的每個元素又是一個元組或者一個列表。dict(key,value),(key,value):將由元組構(gòu)成的列表轉(zhuǎn)換為字典表。 y = dict(name, Tom), (age, 20) #列表里的每個元素是一個元組 y x = dict(name, Tom, age, 20) #列表里的每個元素又是一個

55、列表 x第二章 數(shù)據(jù)類型of31852.7.1 字典概述及聲明2.7 字典4. 字典的方法“.fromkeys( )”通過字典表里的一個方法“.fromkeys( )”來申明,將列表中的每個元素作為字典表里的一個鍵,沒有值的地方總是設(shè)定為“None”,就是空對象。 keys = name, age, job #注意此處是一個列表 emp = dict.fromkeys(keys) #調(diào)用字典表的方法“.fromkeys()”來申明一個字典 emp利用dict函數(shù)進(jìn)行轉(zhuǎn)換時,有兩種方式,一種是鍵值對以“key=value”的形式傳入,第二種是傳入的參數(shù)是一個序列,或者可迭代對象,它是有規(guī)律的鍵值

56、對。另外使用dict自帶的一個方法.fromkeys()也能進(jìn)行轉(zhuǎn)換,注意不是函數(shù)而是一個方法來進(jìn)行轉(zhuǎn)換,此時是將一個序列的值作為字典的鍵來進(jìn)行轉(zhuǎn)換的,鍵所對應(yīng)的值設(shè)定為“None”。第二章 數(shù)據(jù)類型of31862.7.1 字典概述及聲明2.7 字典5. 元素去重一個字典里不允許同一個鍵出現(xiàn)兩次!即每個key都是獨(dú)一無二的!因此,將一個列表或者元組轉(zhuǎn)換成字典的過程實(shí)際上達(dá)到了將相同的多余元素刪除的目的。第二章 數(shù)據(jù)類型of31872.7.2 字典元素的訪問2.7 字典字典是一個無序的結(jié)構(gòu),對字典的訪問操作是通過鍵而不是下標(biāo)索引來進(jìn)行的。同樣,對字典元素的修改、增加或者刪除字典元素也都是通過鍵而

57、非下標(biāo)索引來進(jìn)行。假設(shè)定義了字典dt,具體的訪問操作見表2-12。操作符或函數(shù)描述dtk訪問。返回字典元素的鍵k對應(yīng)的值v,如果鍵不存在,則產(chǎn)生異?!癒eyError”dtk = new_v修改或者增加。修改字典元素的鍵k對應(yīng)的值v為new_v,如果鍵不存在,則增加一個鍵值對del dtk刪除鍵值對。刪除鍵值對,如果鍵不存在,則產(chǎn)生異常“KeyError”del dt刪除字典。字典dt刪除之后就不存在了,再次輸出字典元素會產(chǎn)生異?!癗ameError”len(dt)求長度。返回字典中元素個數(shù),注意,是鍵值對個數(shù)。這是一個全局函數(shù)k in dt如果鍵k在字典中,則返回True,否則返回False

58、k not in dt如果鍵k不在字典中,則返回True,否則返回False第二章 數(shù)據(jù)類型of31882.7.3 字典常用方法2.7 字典字典在Python內(nèi)部已經(jīng)采用面向?qū)ο蠓绞綄?shí)現(xiàn)了,靈活使用字典的方法可以提高編寫代碼的效率。字典的常用方法見表2-13。方法描述dt. clear()清空字典。清空字典后,該字典還存在,但里面的元素全都沒有了,因此,這個方法要謹(jǐn)慎使用dt. get(k,d)當(dāng)鍵k存在于字典中時,返回該鍵所對應(yīng)的值dtk,如果鍵不存在,則返回d,如果省略d,則返回“None”。與直接訪問dtk的區(qū)別是即使鍵不存在,也不拋出異常dt. keys( )獲取所有鍵。注意,返回的類

59、型是一個視圖,跟列表很像,但不是列表。但可以將獲得的視圖轉(zhuǎn)換成列表dt. values( )獲取所有值。得到字典的所有值構(gòu)成的視圖,可以將獲得的視圖轉(zhuǎn)換成列表dt.items( )獲取所有鍵值對。得到字典所有的鍵值對(每一個鍵值對是以元組的形式呈現(xiàn))構(gòu)成的視圖,可以將獲得的視圖轉(zhuǎn)換成列表dt. copy( )復(fù)制字典。方法copy( )產(chǎn)生一個真實(shí)的拷貝,賦值得到的新字典和原字典不屬于共享引用dt1.update(dt2)更新或合并字典。用字典dt2里的元素來更新字典dt1里的相同元素,不同的元素添加到字典dt1里,所以,該方法既可以實(shí)現(xiàn)更新,也可以實(shí)現(xiàn)合并,因此,也可稱為合并更新dt. po

60、p(k,d )彈出鍵k所對應(yīng)的值dtk,同時刪除該鍵值對。如果鍵不存在,則返回d, 如果省略d,則會拋出異?!癒eyError”dt. popitem ( )彈出鍵值對。popitem( )方法是不帶參數(shù)的,一次彈出一個鍵值對,并且鍵值對是以元組的形式呈現(xiàn),多次調(diào)用該方法后字典變成了空第二章 數(shù)據(jù)類型of31892.7.3 字典常用方法2.7 字典幾點(diǎn)說明:(1)get()方法的使用 book = title:Python入門經(jīng)典, author:云創(chuàng), price:59.90 y = book.get(title) #通過get()方法來進(jìn)行訪問 y w = book.get(Title)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論