Python3基礎(chǔ)教程第4章課件_第1頁(yè)
Python3基礎(chǔ)教程第4章課件_第2頁(yè)
Python3基礎(chǔ)教程第4章課件_第3頁(yè)
Python3基礎(chǔ)教程第4章課件_第4頁(yè)
Python3基礎(chǔ)教程第4章課件_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Python3基礎(chǔ)教程第2版 慕課版第4章組合數(shù)據(jù)類(lèi)型本章主要內(nèi)容:集合列表元組字典迭代和列表解析4.1 集合集合(set)是Python 2.4引入的一種類(lèi)型。集合常量用大括號(hào)表示,例如,1,2,3。集合中的元素具有唯一、無(wú)序和不可改變等特點(diǎn)。集合支持?jǐn)?shù)學(xué)理論中的各種集合運(yùn)算。本節(jié)主要內(nèi)容:集合常量集合運(yùn)算集合基本操作凍結(jié)集合4.1.1 集合常量集合常量用大括號(hào)表示,也可用內(nèi)置的set()函數(shù)創(chuàng)建集合對(duì)象示例代碼如下。 x=1,2,3#直接使用集合常量 x1, 2, 3 type(x)#測(cè)試集合對(duì)象的類(lèi)型名稱(chēng) set(1,2,3)#用集合常量做參數(shù)創(chuàng)建集合對(duì)象1, 2, 3 set(1,2,

2、3)#用列表常量做參數(shù)創(chuàng)建集合對(duì)象1, 2, 3 set(123abc)#用字符串常量做參數(shù)創(chuàng)建集合對(duì)象a, 3, b, c, 2, 1 set()#創(chuàng)建空集合set() type()#表示空字典對(duì)象集合中的元素不允許有重復(fù)值在創(chuàng)建集合對(duì)象時(shí),Python會(huì)自動(dòng)去掉重復(fù)值示例代碼如下。 1,1,2,21, 2 set(1,1,2,2)1, 2Python 3.0還引入了集合解析構(gòu)造方法,示例代碼如下。 x for x in 1,2,3,41, 2, 3, 4 x for x in abcdc, a, b, d x * 2 for x in 1,2,3,416, 1, 4, 9 x * 2 fo

3、r x in abcdaa, bb, cc, dd4.1.2 集合運(yùn)算集合對(duì)象支持求長(zhǎng)度、判斷包含、求差集、求并集、求交集、求對(duì)稱(chēng)差和比較等運(yùn)算,示例代碼如下。 x=1,2,a,bc y=1,a,5 len(x)#求長(zhǎng)度:計(jì)算集合中元素的個(gè)數(shù)4 a in x#判斷包含:判斷集合是否包括數(shù)據(jù)True x y#求差集:用屬于x但不屬于y的元素創(chuàng)建新集合2, bc x | y#求并集:用x、y兩個(gè)集合中的所有元素創(chuàng)建新集合1, 2, a, bc, 5 x & y#求交集:用同時(shí)屬于x和y的元素創(chuàng)建新集合1, a x y#求對(duì)稱(chēng)差:用屬于x但不屬于y以及屬于y但不屬于x的元素創(chuàng)建新集合2, 5, bc

4、 x 1,2 x=1,2 y=x.copy()#復(fù)制集合對(duì)象 y1, 2 x.add(abc)#為集合添加一個(gè)元素 x1, 2, abc x.update(10,20)#為集合添加多個(gè)元素 x1, 2, 10, 20, abc x.remove(10)#從集合中刪除指定元素 x1, 2, 20, abc x.remove(50)#刪除不存在元素時(shí)會(huì)報(bào)錯(cuò)Traceback (most recent call last): File , line 1, in KeyError: 50 x.discard(20)#從集合中刪除指定元素 x1, 2, abc x.discard(50)#刪除不存在元素

5、時(shí)不報(bào)錯(cuò) x.pop()#從集合中隨機(jī)刪除一個(gè)元素,并返回該元素。1 x2, abc x.clear()#刪除集合中的全部元素 xset()集合可用for循環(huán)執(zhí)行迭代操作,示例代碼如下。 x=1,2,3 for a in x:print(a)123集合元素是不可改變的,因此不能將可變對(duì)象放入集合中。集合、列表和字典對(duì)象均不能加入集合。元組可以作為一個(gè)元素加入集合。 x=1,2 x1, 2 x.add(1) #不能將集合對(duì)象加入集合Traceback (most recent call last): File , line 1, in x.add(1)TypeError: unhashable

6、type: set x.add(1,2,3)#不能將列表對(duì)象加入集合Traceback (most recent call last): File , line 1, in x.add(1,2,3TypeError: unhashable type: list x.add(Mon:1)#不能將字典對(duì)象加入集合Traceback (most recent call last): File , line 1, in x.add(Mon:1)TypeError: unhashable type: dict x.add(1,2,3)#可以將元組加入集合 x1, 2, (1, 2, 3)4.1.4 凍結(jié)

7、集合Python提供了一種特殊的集合凍結(jié)集合(frozenset)凍結(jié)集合是一個(gè)不可改變的集合,可將其作為其他集合的元素。凍結(jié)集合的輸出格式與普通集合不同, x=frozenset(1,2,3)#創(chuàng)建凍結(jié)集合 print(x)#輸出凍結(jié)集合frozenset(1, 2, 3) y=set(4,5) y.add(x)#將凍結(jié)集合作為元素加入另一個(gè)集合 yfrozenset(1, 2, 3), 4, 5 x.add(10)#試圖為凍結(jié)集合添加元素會(huì)發(fā)生錯(cuò)誤Traceback (most recent call last): File , line 1, in x.add(10)AttributeE

8、rror: frozenset object has no attribute add4.2 列表列表和元組都屬于序列,序列支持索引、分片和合并等操作。字符串屬于特殊的不可變序列。本節(jié)主要內(nèi)容:列表基本特點(diǎn)列表基本操作常用列表方法4.2.1 列表基本特點(diǎn)和操作列表常量用方括號(hào)表示,例如,1,2,abc列表的主要特點(diǎn)如下。列表可以包含任意類(lèi)型的對(duì)象:數(shù)字、字符串、列表、元組或其他對(duì)象。列表是一個(gè)有序序列。與字符串類(lèi)似,可通過(guò)位置偏移量執(zhí)行索引和分片操作。列表是可變的。列表的長(zhǎng)度可變,即可添加或刪除列表成員。列表元素的值也可改變。每個(gè)列表元素存儲(chǔ)的是對(duì)象的引用,而不是對(duì)象本身,類(lèi)似于C/C+的指針

9、數(shù)組。1創(chuàng)建列表列表對(duì)象可以用列表常量或list()函數(shù)來(lái)創(chuàng)建,示例代碼如下。 #創(chuàng)建空列表對(duì)象 list()#創(chuàng)建空列表對(duì)象 1,2,3#用同類(lèi)型數(shù)據(jù)創(chuàng)建列表對(duì)象1, 2, 3 1,2,(a,abc),12,34#用不同類(lèi)型的數(shù)據(jù)創(chuàng)建列表對(duì)象1, 2, (a, abc), 12, 34 list(abcd)#用可迭代對(duì)象創(chuàng)建列表對(duì)象a, b, c, d list(range(-2,3)#用連續(xù)整數(shù)創(chuàng)建列表對(duì)象-2, -1, 0, 1, 2 list(1,2,3)#用元組創(chuàng)建列表對(duì)象1, 2, 3 x+10 for x in range(5)#用解析結(jié)構(gòu)創(chuàng)建列表對(duì)象10, 11, 12, 13

10、, 142求長(zhǎng)度可用len()函數(shù)獲得列表長(zhǎng)度,示例代碼如下。 len()0 len( 1, 2, (a, abc), 3, 4 )43合并加法運(yùn)算可用于合并列表,示例代碼如下。 1,2+abc,201, 2, abc, 204重復(fù)乘法運(yùn)算可用于創(chuàng)建具有重復(fù)值的列表,示例代碼如下。 1,2*31, 2, 1, 2, 1, 25迭代迭代操作可用于遍歷列表元素,示例代碼如下。 x=1,2,(a,abc),12,34 for a in x:print(a)12(a, abc)12, 346關(guān)系判斷可用in操作符判斷對(duì)象是否屬于列表,示例代碼如下。 2 in 1,2,3True a in 1,2,3F

11、alse7索引與字符串類(lèi)似,可通過(guò)位置來(lái)索引列表元素,也可通過(guò)索引修改列表元素。 x=1,2,a,b x0#輸出列表的第1個(gè)數(shù)據(jù)1 x2#輸出列表的第3個(gè)數(shù)據(jù)a, b x-1#用負(fù)數(shù)從列表末尾開(kāi)始索引a, b x2=100#修改列表的第3個(gè)數(shù)據(jù) x1, 2, 1008分片與字符串類(lèi)似,可通過(guò)分片來(lái)獲得列表中的連續(xù)多個(gè)數(shù)據(jù)。也可通過(guò)分片將連續(xù)多個(gè)數(shù)據(jù)替換成新的數(shù)據(jù)。 x=list(range(10)#創(chuàng)建列表對(duì)象 x0, 1, 2, 3, 4, 5, 6, 7, 8, 9 x2:5#返回分片列表2, 3, 4 x2:#省略分片結(jié)束位置時(shí),分片直到列表結(jié)束2, 3, 4, 5, 6, 7, 8,

12、9 x:5#省略分片開(kāi)始位置時(shí),分片從第1個(gè)數(shù)據(jù)開(kāi)始0, 1, 2, 3, 4 x3:10:2 #指定分片時(shí)偏移量步長(zhǎng),步長(zhǎng)為23, 5, 7, 9 x3:10:-2#步長(zhǎng)為負(fù)數(shù)時(shí),按相反順序獲得數(shù)據(jù) x10:3:-29, 7, 5 x2:5=abc#通過(guò)分片替換多個(gè)數(shù)據(jù) x0, 1, a, b, c, 5, 6, 7, 8, 9 x2:5=10,20#通過(guò)分片替換多個(gè)數(shù)據(jù) x0, 1, 10, 20, 5, 6, 7, 8, 94.2.2 常用列表方法1添加單個(gè)數(shù)據(jù)append()方法用于在列表末尾添加一個(gè)數(shù)據(jù)。 x=1,2 x.append(abc) x1, 2, abc2添加多個(gè)數(shù)據(jù)ex

13、tend()方法用于在列表末尾添加多個(gè)數(shù)據(jù),參數(shù)為可迭代對(duì)象。 x=1,2 x.extend(a,b)#用列表對(duì)象作參數(shù) x1, 2, a, b x.extend(abc) #用字符串作參數(shù)時(shí),每個(gè)字符作為一個(gè)數(shù)據(jù) x1, 2, a, b, a, b, c3插入數(shù)據(jù)insert()方法用于在指定位置插入數(shù)據(jù),示例代碼如下。 x=1,2,3 x.insert(1,abc) x1, abc, 2, 34按值刪除數(shù)據(jù)remove()方法用于刪除列表中的指定值。如果有重復(fù)值,則刪除第1個(gè),示例代碼如下。 x=1,2,2,3 x.remove(2) x1, 2, 35按位置刪除pop()方法用于刪除指定

14、位置的對(duì)象,省略位置時(shí)刪除列表最后一個(gè)對(duì)象,同時(shí)返回刪除對(duì)象。 x=1,2,3,4 x.pop()#刪除并返回最后一個(gè)對(duì)象4 x1, 2, 3 x.pop(1)#刪除并返回偏移量為1的對(duì)象2 x1, 36用del語(yǔ)句刪除可用del語(yǔ)句刪除列表中的指定數(shù)據(jù)或分片,示例代碼如下。 x=1,2,3,4,5,6 del x0#刪除第1個(gè)數(shù)據(jù) x2, 3, 4, 5, 6 del x2:4#刪除偏移量為2、3的數(shù)據(jù) x2, 3, 67刪除全部數(shù)據(jù)clear()方法可刪除列表中的全部數(shù)據(jù),示例代碼如下。 x=1,2,3 x.clear() x8復(fù)制列表copy()方法可以復(fù)制列表對(duì)象,示例代碼如下。 x=

15、1,2,3 y=x.copy() y1, 2, 39列表排序sort()方法可將列表排序。若列表對(duì)象全部是數(shù)字,則按數(shù)字從小到大排序。若列表對(duì)象全部是字符串,則按字典順序排序。若列表包含多種類(lèi)型,則會(huì)出錯(cuò)示例代碼如下。 x=10,2,30,5 x.sort()#對(duì)數(shù)字列表排序 x2, 5, 10, 30 x=bbc, abc, BBC, Abc x.sort()#對(duì)字符串列表排序 xAbc, BBC, abc, bbc x=1,5,3,bbc,abc,BBC x.sort()#對(duì)混合類(lèi)型列表排序時(shí)出錯(cuò)Traceback (most recent call last): File , line

16、1, in x.sort()TypeError: unorderable types: str() int()sort()方法通過(guò)按順序使用“ def getv(a):#返回字典中第1個(gè)“鍵:值”對(duì)中的值. b=list(a.values(). return b0. x=price:20,price:2,price:12 x.sort(key=getv)#按列表中每個(gè)字典的第1個(gè)“鍵:值”對(duì)中的值排序 xprice: 2, price: 12, price: 20sort()方法默認(rèn)按從小到大排序,還可用reverse參數(shù)指定按從大到小排序。 b=12,5,9,8 b.sort(reverse

17、=True)#從大到小排序 b12, 9, 8, 5 x.sort(key=getv,reverse=True)#從大到小排序 xprice: 20, price: 12, price: 210反轉(zhuǎn)順序可用reverse()方法將列表中數(shù)據(jù)的位置反轉(zhuǎn)。 x=1,2,3 x.reverse() x3, 2, 14.3 元組元組可以看作是不可變的列表,它具有列表的大多數(shù)特點(diǎn)。元組常量用圓括號(hào)表示,例如:(1,2)、(a,b,abc)本節(jié)主要內(nèi)容:元組的特點(diǎn)和操作元組的方法4.3.1 元組的特點(diǎn)和操作元組的主要特點(diǎn)如下。元組可包含任意類(lèi)型的對(duì)象。元組是有序的。元組中的對(duì)象可通過(guò)位置進(jìn)行索引和分片。元

18、組的大小不能改變,即不能為元組添加對(duì)象,也不能刪除元組中的對(duì)象。元組中的對(duì)象也不能改變。元組中存儲(chǔ)的是對(duì)象的引用,而不是對(duì)象本身。1創(chuàng)建元組可用元組常量或tuple()方法來(lái)創(chuàng)建元組對(duì)象,示例如下。 ()#創(chuàng)建空元組對(duì)象() tuple()#創(chuàng)建空元組對(duì)象() (2,)#包含一個(gè)對(duì)象的元組,不能缺少逗號(hào)(2,) (1,2.5,abc,1,2)#包含不同類(lèi)型對(duì)象的元組(1, 2.5, abc, 1, 2) 1,2.5,abc,1,2#元組常量可以省略括號(hào)(1, 2.5, abc, 1, 2) (1,2,(a,b)#元組可以嵌套元組(1, 2, (a, b) tuple(abcd)#用字符串創(chuàng)建元

19、組,可迭代對(duì)象均可用于創(chuàng)建元組(a, b, c, d) tuple(1,2,3)#用列表創(chuàng)建元組(1, 2, 3) tuple(x*2 for x in range(5)#用解析結(jié)構(gòu)創(chuàng)建元組(0, 2, 4, 6, 8)2求長(zhǎng)度len()函數(shù)可用于獲得元組長(zhǎng)度,示例代碼如下。 len(1,2,3,4)43合并加法運(yùn)算可用于合并多個(gè)元組,示例代碼如下。 (1,2)+(ab,cd)+(2.45,)(1, 2, ab, cd, 2.45)4重復(fù)乘法運(yùn)算可用于合并多個(gè)重復(fù)的元組,示例代碼如下。 (1,2)*3(1, 2, 1, 2, 1, 2)5迭代可用迭代方法遍歷元組中的各個(gè)對(duì)象,示例代碼如下。 f

20、or x in (1,2.5,abc,1,2):print(x)12.5abc1, 26關(guān)系判斷in操作符可用于判斷對(duì)象是否屬于元組,示例代碼如下。 2 in (1,2)True 5 in (1,2)False7索引和分片可通過(guò)位置對(duì)元組對(duì)象進(jìn)行索引和分片,示例代碼如下。 x=tuple(range(10) x(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) x11 x-19 x2:5(2, 3, 4) x2:(2, 3, 4, 5, 6, 7, 8, 9) x:5(0, 1, 2, 3, 4) x1:7:2(1, 3, 5) x7:1:-2(7, 5, 3)4.3.2 元組的方法

21、1count()方法count()方法用于返回指定值在元組中出現(xiàn)的次數(shù),示例如下。 x=(1,2)*3 x(1, 2, 1, 2, 1, 2) x.count(1)#返回1在元組中出現(xiàn)的次數(shù)3 x.count(3)#元組不包含指定值時(shí),返回002index(value,start,end)方法未用start和end指定范圍時(shí),返回指定值在元組中第一次出現(xiàn)的位置;指定范圍時(shí),返回指定值在指定范圍內(nèi)第一次出現(xiàn)的位置。 x=(1,2,3)*3 x(1, 2, 3, 1, 2, 3, 1, 2, 3) x.index(2)#默認(rèn)查找全部元組1 x.index(2,2) #從偏移量2到元組末尾查找4 x

22、.index(2,2,7)#在范圍2:7內(nèi)查找4 x.index(5)#如果元組不包含指定的值,則出錯(cuò)Traceback (most recent call last): File , line 1, in x.index(5)ValueError: tuple.index(x): x not in tuple4.4 字典字典是一種無(wú)序的映射集合,包含一系列的“鍵:值”對(duì)。字典常量用大括號(hào)表示,例如,name:John,age:25,sex:male。其中,字符串“name”“age”和“sex”為鍵,字符串“John”和“sex”以及數(shù)字25為值。本節(jié)主要內(nèi)容:字典的特點(diǎn)和操作字典常用方法字

23、典視圖4.4.1 字典的特點(diǎn)和操作字典的主要特點(diǎn)如下。字典的鍵名稱(chēng)通常采用字符串,也可以用數(shù)字、元組等不可變的類(lèi)型。字典的值可以是任意類(lèi)型。字典也可稱(chēng)為關(guān)聯(lián)數(shù)組或散列表,它通過(guò)鍵映射到值。字典是無(wú)序的,它通過(guò)鍵來(lái)訪問(wèn)映射的值,而不是通過(guò)位置來(lái)索引。字典屬于可變映射,可修改鍵映射的值。字典長(zhǎng)度可變,可為字典添加或刪除“鍵:值”對(duì)。字典可以任意嵌套,即鍵映射的值可以是一個(gè)字典。字典存儲(chǔ)的是對(duì)象的引用,而不是對(duì)象本身。1創(chuàng)建字典 #創(chuàng)建空字典 dict()#創(chuàng)建空字典 name:John,age:25,sex:male#使用字典常量sex: male, age: 25, name: John boo

24、k:Python編程:100,C+入門(mén):99#使用嵌套的字典book: C+入門(mén): 99, Python編程: 100 1:onw,2:two#將數(shù)字作為鍵1: onw, 2: two (1,3,5):10,(2,4,6):50#將元組作為鍵(1, 3, 5): 10, (2, 4, 6): 50 dict(name=Jhon,age=25)#使用賦值格式的“鍵:值”對(duì)創(chuàng)建字典age: 25, name: Jhon dict(name,Jhon),(age,25)#使用包含“鍵:值”對(duì)元組的列表創(chuàng)建字典name: Jhon, age: 25 dict.fromkeys(name,age)#創(chuàng)建

25、無(wú)映射值的字典,默認(rèn)值為Noneage: None, name: None dict.fromkeys(name,age,0)#創(chuàng)建值相同的字典age: 0, name: 0 dict.fromkeys(abc)#使用字符串創(chuàng)建無(wú)映射值的字典b: None, a: None, c: None dict.fromkeys(abc,10)#使用字符串和映射值創(chuàng)建字典b: 10, a: 10, c: 10 dict.fromkeys(abc,(1,2,3)a: (1, 2, 3), b: (1, 2, 3), c: (1, 2, 3) dict(zip(name,age,John,25)#使用zip

26、解析“鍵:值”列表創(chuàng)建字典age: 25, name: John x=#先創(chuàng)建一個(gè)空字典 xname=John#通過(guò)賦值添加“鍵:值”對(duì) xage=25 xage: 25, name: John2求長(zhǎng)度len()函數(shù)可返回字典長(zhǎng)度,即“鍵:值”對(duì)的個(gè)數(shù)。 len(name:John,age:25,sex:male)33關(guān)系判斷in操作符可用于判斷字典是否包含某個(gè)鍵。 name in name:John,age:25,sex:maleTrue date in name:John,age:25,sex:maleFalse4索引字典可通過(guò)鍵來(lái)索引其映射的值,示例代碼如下。 x=book:Python

27、編程:100,C+入門(mén):99,publish:人民郵電出版社 xbookC+入門(mén): 99, Python編程: 100 xpublish人民郵電出版社 xbookPython編程 #用兩個(gè)鍵索引嵌套的字典元素100可通過(guò)索引修改映射值,示例代碼如下。 x=dict(name=Jhon,age=25) xage: 25, name: Jhon xage=30#修改映射值 xage: 30, name: Jhon xphone為不存在的鍵賦值,為字典添加“鍵:值”對(duì) xphone: age: 30, name: Jhon也可通過(guò)索引刪除鍵值對(duì),示

28、例代碼如下。 x=name:John,age:25 del xname#刪除“鍵:值”對(duì) xage: 254.4.2 字典常用方法1clear()刪除全部字典對(duì)象,示例代碼如下。 x=dict(name=Jhon,age=25) x.clear() x2copy()復(fù)制字典對(duì)象,示例代碼如下。 x=name:John,age:25 y=x#直接賦值時(shí),x和y引用同一個(gè)字典 yname: John, age: 25 yname=Curry#通過(guò)y修改字典 x,y#顯示結(jié)果相同(age: 25, name: Curry, age: 25, name: Curry) y is x#判斷是否引用相同對(duì)

29、象True y=x.copy()#y引用復(fù)制的字典 yname=Python#此時(shí)不影響x的引用 x,y(age: 25, name: Curry, age: 25, name: Python) y is x#判斷是否引用相同對(duì)象False3get(key, default)get()方法返回鍵key映射的值。如果鍵key不存在,返回空值??捎胐efault參數(shù)指定鍵不存在時(shí)的返回值。 x=name:John,age:25 x.get(name)#返回映射值John x.get(addr)#不存在的鍵返回空值 x.get(addr,xxx)#不存在的鍵返回指定值xxx4pop(key, def

30、ault)pop()方法從字典中刪除“鍵:值”對(duì),并返回映射值。若鍵不存在,則返回default。若鍵不存在且未指定default參數(shù)時(shí),刪除鍵會(huì)出錯(cuò)。 x=name:John,age:25 x.pop(name)#刪除鍵并返回映射值John xage: 25 x.pop(sex,xxx)#刪除不存在的鍵,返回default參數(shù)值xxx x.pop(sex)#刪除不存在的鍵,未指定default參數(shù),出錯(cuò)Traceback (most recent call last): File , line 1, in x.pop(sex)KeyError: sex5popitem()popitem()方

31、法從字典刪除“鍵:值”對(duì),同時(shí)返回“鍵:值”對(duì)元組??兆值湔{(diào)用該方法會(huì)產(chǎn)生KeyError錯(cuò)誤。 x=name:John,age:25 x.popitem()#刪除“鍵:值”對(duì)并返回元組(age, 25) x#x中剩余一個(gè)“鍵:值”對(duì)name: John x.popitem()#刪除“鍵:值”對(duì)并返回元組(name, John) x#x為空字典 x.popitem()#空字典產(chǎn)生KeyError錯(cuò)誤Traceback (most recent call last): File , line 1, in x.popitem()KeyError: popitem(): dictionary is

32、empty6setdefault(key, default)setdefault()方法用于返回映射值或者為字典添加“鍵:值”對(duì)。指定的鍵key在字典中存在時(shí),返回映射值。若指定的鍵key不存在,則將“鍵:值”對(duì)“key:default”添加到字典。省略default時(shí),映射值默認(rèn)為None。 x=name:John,age:25 x.setdefault(name)#返回指定鍵的映射值John x.setdefault(sex)#鍵不存在,為字典添加“鍵:值”對(duì),映射值默認(rèn)為None xsex: None, age: 25, name: John x.setdefault(phone,123

33、456)#添加“鍵:值”對(duì)123456 xsex: None, phone: 123456, age: 25, name: John7update(other)update()方法用于為字典添加“鍵:值”對(duì)。參數(shù)other可以是另一個(gè)字典或用賦值格式表示的元組。若字典已存在同名的鍵,則映射值被覆蓋。 x=name:John,age:25 x.update(age:30,sex:male)#添加“鍵:值”對(duì),并覆蓋同名鍵的映射值 x#age的映射值已被修改sex: male, age: 30, name: John x.update(name=Mike)#修改映射值 xsex: male, ag

34、e: 30, name: Mike x.update(code=110,address=NewStreet)#添加“鍵:值”對(duì) xsex: male, address: NewStreet, age: 30, code: 110, name: Mike4.4.3 字典視圖1items()items()方法返回“鍵:值”對(duì)視圖,示例代碼如下。 x=name:John,age:25 y=x.items()#返回“鍵:值”對(duì)視圖 y# “鍵:值”對(duì)視圖為dict_items對(duì)象dict_items(age, 25), (name, John) list(y)#將“鍵:值”對(duì)視圖轉(zhuǎn)換為列表(age,

35、25), (name, John) for a in y:print(a)#迭代“鍵:值”對(duì)視圖(age, 25)(name, John) xage=30#修改字典 xage: 30, name: John y#從顯示結(jié)果可以看出視圖反映了字典中的修改內(nèi)容dict_items(age, 30), (name, John)2keys()keys()方法返回字典中所有鍵的視圖,示例代碼如下。 x=name:John,age:25 y=x.keys()#返回鍵的視圖 y#顯示鍵視圖,鍵視圖為dict_keys對(duì)象dict_keys(age, name) xsex=male#為字典添加“鍵:值”對(duì) x

36、sex: male, age: 25, name: John y#顯示結(jié)果說(shuō)明鍵視圖包含了新添加的鍵dict_keys(sex, age, name) list(y)#將鍵視圖轉(zhuǎn)換為列表sex, age, name3values()values()方法返回字典中全部值的視圖,示例代碼如下。 x=name:John,age:25 y=x.values()#返回字典的值視圖 y#顯示值視圖,值視圖為dict_values對(duì)象dict_values(25, John) xsex=male#添加“鍵:值”對(duì) y#值視圖包含了新添加的值dict_values(male, 25, John) list(y

37、)#將值視圖轉(zhuǎn)換為列表male, 25, John4鍵視圖的集合操作鍵視圖支持各種集合運(yùn)算,“鍵:值”對(duì)視圖和值視圖不支持集合運(yùn)算。 x=a:1,b:2 kx=x.keys()#返回x的鍵視圖 y=b:3,c:4 ky=y.keys()#返回y的鍵視圖 kx-ky#求差集a kx|ky#求并集a, b, c kx&ky#求交集b kxky#求對(duì)稱(chēng)差集a, c4.5 迭代和列表解析本節(jié)主要內(nèi)容:迭代列表解析zip()、map()和filter()函數(shù)4.5.1 迭代字符串、列表、元組和字典等對(duì)象均支持迭代操作,可使用迭代器遍歷對(duì)象。字符串、列表、元組和字典等對(duì)象沒(méi)有自己的迭代器,可調(diào)用iter(

38、)函數(shù)生成迭代器。對(duì)迭代器調(diào)用next()函數(shù)即可遍歷對(duì)象。next()函數(shù)依次返回可迭代對(duì)象的元素,無(wú)數(shù)據(jù)返回時(shí),會(huì)產(chǎn)生StopIteration異常 d=iter(1,2,3)#為列表生成迭代器 next(d)#返回第1個(gè)數(shù)據(jù)1 next(d)#返回第2個(gè)數(shù)據(jù)2 next(d)#返回第3個(gè)數(shù)據(jù)3 next(d)#無(wú)數(shù)據(jù)可返回,產(chǎn)生異常Traceback (most recent call last): File , line 1, in StopIteration d=iter(1,2,(3,4)#使用迭代器迭代元組 next(d)1 next(d)2 next(d)(3, 4) d=it

39、er(abc)#使用迭代器迭代字符串 next(d)a next(d)b next(d)c d=iter(name:Jhon,age:25)#使用迭代器迭代字典,字典只能迭代鍵 next(d)name next(d)age d=iter(name:Jhon,age:25.keys()#迭代字典keys方法返回對(duì)象 next(d)age next(d)name d=iter(name:Jhon,age:25.values()#迭代字典values方法返回對(duì)象 next(d)25 next(d)Jhon d=iter(name:Jhon,age:25.items()#迭代字典items方法返回對(duì)象

40、 next(d)(age, 25) next(d)(name, Jhon)文件對(duì)象支持迭代操作,示例代碼如下。 mf=open(rD:pytempcode.txt)#打開(kāi)文件 mf._next_()#讀下一行one第一行n mf._next_()#讀下一行two第二行n mf._next_()#讀下一行three第三行xxx mf._next_()#讀下一行,已無(wú)數(shù)據(jù),出錯(cuò)Traceback (most recent call last): File , line 1, in StopIteration也可用next()函數(shù)來(lái)迭代文件對(duì)象,示例代碼如下。 mf=open(rD:pytempco

41、de.txt) next(mf)one第一行n next(mf)two第二行n next(mf)three第三行xxx next(mf)Traceback (most recent call last): File , line 1, in StopIteration4.5.2 列表解析列表解析與循環(huán)的概念緊密相關(guān),先通過(guò)下面的例子了解如何使用for循環(huán)來(lái)修改列表。 t=1,2,3,4 for x in range(4):. tx=tx+10. t11, 12, 13, 14使用列表解析來(lái)代替上面例子的for循環(huán)。 t=1,2,3,4 t=x+10 for x in t t11, 12, 13

42、, 14列表解析的基本結(jié)構(gòu)如下。表達(dá)式 for 變量 in 可迭代對(duì)象 if 表達(dá)式1帶條件的列表解析可以在列表解析中使用if設(shè)置篩選條件,示例代碼如下。 x+10 for x in range(10) if x%2=0#用if篩選偶數(shù)10, 12, 14, 16, 182.多重解析嵌套列表解析支持嵌套,示例代碼如下。 x+y for x in (10,20) for y in (1,2,3)11, 12, 13, 21, 22, 23嵌套時(shí),Python對(duì)第1個(gè)for循環(huán)中的每個(gè)x,執(zhí)行嵌套for循環(huán)。用下面的嵌套的for循環(huán)來(lái)生成上面的列表。 a= for x in (10,20):. f

43、or y in (1,2,3):. a.append(x+y). a11, 12, 13, 21, 22, 23對(duì)嵌套的解析,也可以分別使用if執(zhí)行篩選,示例代碼如下。 x+y for x in (10,20) if x10 for y in (1,2,3) if y%2=121, 233列表解析用于生成元組列表解析用于生成元組的示例代碼如下。 tuple(x*2 for x in range(5)(0, 2, 4, 6, 8) tuple(x*2 for x in range(10) if x%2=1)(2, 6, 10, 14, 18)4列表解析用于生成集合列表解析用于生成集合的示例代碼如

44、下。 x for x in range(10)0, 1, 2, 3, 4, 5, 6, 7, 8, 9 x for x in range(10) if x%2=11, 3, 5, 9, 75列表解析用于生成字典列表解析用于生成字典的示例代碼如下。 x:ord(x) for x in abcdd: 100, a: 97, b: 98, c: 99 x:ord(x) for x in abcd if ord(x)%2=0d: 100, b: 986列表解析用于文件列表解析用于文件時(shí),每次從文件讀取一行數(shù)據(jù),示例代碼如下。 x for x in open(rD:pytempcode.txt)one第一行n, two第二行n, three第三行 x.strip() for x in open(rD:pytempcode.txt)one第一行, two第二行, three第三行 x.strip() for x in open(rD:pytempcode.txt) if x0=ttwo第二行, three第三行7其他的列表解析應(yīng)用一些函數(shù)中可直接使用可迭代對(duì)象,示例代碼如下。 all(0,2,4,1,3,5)#所有對(duì)象都為真時(shí)返回TrueFalse any(0,2,4,1,3,5)#有一個(gè)對(duì)象為真時(shí)返回TrueTrue sum(0,2,4,1,3,5)#求和15 sort

溫馨提示

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

評(píng)論

0/150

提交評(píng)論