Python科學(xué)計(jì)算及應(yīng)用課件:Python序列計(jì)算_第1頁(yè)
Python科學(xué)計(jì)算及應(yīng)用課件:Python序列計(jì)算_第2頁(yè)
Python科學(xué)計(jì)算及應(yīng)用課件:Python序列計(jì)算_第3頁(yè)
Python科學(xué)計(jì)算及應(yīng)用課件:Python序列計(jì)算_第4頁(yè)
Python科學(xué)計(jì)算及應(yīng)用課件:Python序列計(jì)算_第5頁(yè)
已閱讀5頁(yè),還剩55頁(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)介

Python科學(xué)計(jì)算及應(yīng)用

Python序列計(jì)算列表(list)4.2元組(tuple)4.3字符串(str)4.1

Python序列計(jì)算集合(set)4.5常用內(nèi)置函數(shù)4.6字典(dict)4.4數(shù)據(jù)類型轉(zhuǎn)換4.74.1字符串(str)字符串是由一對(duì)單引號(hào),雙引號(hào)或三引號(hào)之間包含內(nèi)容組成的符號(hào)序列,是一個(gè)有序的字符集合,用于存儲(chǔ)和表示文本信息,是不可變對(duì)象。如果需要嵌套引號(hào),則不允許出現(xiàn)單引號(hào)嵌套單引號(hào),雙引號(hào)嵌套雙引號(hào)的現(xiàn)象。4.1.1字符串的輸出

print()方法用print()方法輸出,形式是print('字符串')s1='hello's2='world'print(s1,s2)#helloworldprint(s1+s2)#helloworld,+可以連接字符串print('hello'+'3')#hello3print('hello'*3)#hellohellohello,*表示重復(fù)

print(3,'hello')#3helloname='zhangsan'age=18print("Mynameis%s,Myageis%d"%(name,age))4.1.1字符串的輸出

當(dāng)用格式符號(hào)%s時(shí),形式是print('%s'%('字符串')),變量超過(guò)2個(gè)使用元組格式,如print("%s,%s"%(字符串1,字符串2)),%s表示字符串的位置。傳入的值要與%s一一對(duì)應(yīng)。name='張三'position='python程序員'address='湖北武漢市東湖新技術(shù)開(kāi)發(fā)區(qū)'print('-'*50)print("姓名:%s"%name)print("職位:%s"%position)print("公司地址:%s"%address)print('-'*50)4.1字符串(str)str.format()方法print('...{索引},...,{索引},...'.format(值1,值2))#單引號(hào)可以換成雙引號(hào)和三引號(hào)print('...{key1},...,{key2},...'.format(key1=value,key2=value))name='zhangsan'age=18print('Mynameis{},Myageis{}'.format(name,age))print('Mynameis{0},Myageis{1}'.format(name,age))print('Mynameis{name},Myageis{age}'.format(name='zhangsan',age=18))4.1字符串(str)f-strings方法name='zhangsan'age=18print(f'Mynameis{name},Myageis{age}')#{}中直接使用變量#輸出:Mynameiszhangsan,Myageis18

在Python3.6中引入

了f-strings,不僅比str.format使用簡(jiǎn)單,而且效率也更高。f-string是字符串前面加上"f",{}內(nèi)直接使用變量、表達(dá)式等4.1.2字符串輸入username=input('請(qǐng)輸入用戶名:')print("用戶名為:%s"%username)password=input('請(qǐng)輸入密碼:')print("密碼為:%s"%password)4.1字符串(str)下標(biāo)(索引)就是編號(hào),切片(slice)是指對(duì)操作的對(duì)象截取其中一部分的操作。4.1.3下標(biāo)和切片

[start:end:step],三個(gè)參數(shù)可以部分省略[:]表示提取從開(kāi)頭(默認(rèn)位置0)到結(jié)尾(默認(rèn)位置-1)的整個(gè)字符串。[start:]表示從start提取到結(jié)尾。[:end]表示從開(kāi)頭提取到end–1。[start:end]表示從start提取到end–1。[start:end:step]表示從start提取到end-1,每step個(gè)字符提取一個(gè)。左側(cè)第一個(gè)字符的位置/偏移量為0,右側(cè)最后一個(gè)字符的位置/偏移量為-1。4.1字符串(str)例4.1

已知字符串為str='0123456789′,輸出以下切片。str="0123456789"print(str[0:3])#012,截取第一位到第三位的字符。print(str[:])#0123456789,截取字符串的全部字符。print(str[6:])#6789,截取第七個(gè)字符到結(jié)尾。print(str[:-3])#0123456,截取從頭開(kāi)始到倒數(shù)第三個(gè)字符之前。print(str[2])#2,截取第三個(gè)字符。print(str[-1])#9,截取倒數(shù)第一個(gè)字符。print(str[::-1])#9876543210,創(chuàng)造與原字符串順序相反的字符串。print(str[-3:-1])#78,截取倒數(shù)第三位與倒數(shù)第一位之前的字符。print(str[-3:])#789,截取倒數(shù)第三位到結(jié)尾。print(str[:-5:-3])#96,逆序截取,截取倒數(shù)第五位數(shù)與倒數(shù)第三位數(shù)之間。print(str[::2])#02468,按照步長(zhǎng)為二,返回所有值。4.1字符串(str)4.1.4字符串常見(jiàn)操作

性質(zhì)判定方法功能isalnum()是否全是字母和數(shù)字,并至少有一個(gè)字符。isalpha()是否全是字母,并至少有一個(gè)字符

。isdigit()是否全是數(shù)字,并至少有一個(gè)字符。islower()字符串中字母是否全是小寫(xiě)。isupper()字符串中字母是否全是小寫(xiě)。isspace()是否全是空白字符,并至少有一個(gè)字符。istitle()判斷字符串是否每個(gè)單詞都有且只有第一個(gè)字母是大寫(xiě)。startswith(prefix[,start[,end]])用于檢查字符串是否是以指定子字符串開(kāi)頭,如果是則返回

True,否則返

False。endswith(suffix[,start[,end]])用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回True,否則返回False。4.1字符串(str)例4.2閱讀下面程序,寫(xiě)出輸出結(jié)果。print('abc'.isspace())#Falseprint('abc'.isalpha())#Trueprint('123'.isnumeric())#Trueprint('abc123'.isalnum())#Trueprint('123abc!'.isalnum())#False4.1字符串(str)查找與替換方法功能count(sub[,start[,end]])統(tǒng)計(jì)字符串里某個(gè)字符sub出現(xiàn)的次數(shù)。find(sub[,start[,end]])檢測(cè)字符串中是否包含子字符串sub,如果包含子字符串返回開(kāi)始的索引值,否則返回-1。index(sub[,start[,end]]跟find()方法一樣,如果sub不在string中會(huì)拋出ValueError異常。rfind(sub[,start[,end]])類似于find()函數(shù),從右邊開(kāi)始查找。rindex(sub[,start[,end]])類似于index(),從右邊開(kāi)始。replace(old,new[,count])用來(lái)替換字符串的某些子串,用new替換old。如果指定count參數(shù),最多替換count次,如果不指定,就全部替換。4.1字符串(str)例4.3閱讀下面程序,寫(xiě)出輸出結(jié)果。str="hello,mynameis{name},iam{age}"print(str.find("w"))#-1print(str.format(name="zhangsan",age=18))#hello,mynameiszhangsan,iam18print(str.replace("hello","你好").format(name="lisi",age=20))#你好,mynameislisi,iam20print(str.index("n"))#9print(str.find("wwww"))#-14.1字符串(str)拆分與連接方法功能partition(sep)用來(lái)根據(jù)指定的分隔符將字符串進(jìn)行分割,如果字符串包含指定的分隔符,則返回一個(gè)3元的元組,第一個(gè)為分隔符左邊的子串,第二個(gè)為分隔符本身,第三個(gè)為分隔符右邊的子串。如果sep沒(méi)有出現(xiàn)在字符串中,則返回值為(sep,",")。rpartition(sep)類似于partition()函數(shù),不過(guò)是從右邊開(kāi)始查找.splitness([keepends])按照行('\r','\r\n',\n')分隔,返回一個(gè)包含各行作為元素的列表,如果參數(shù)keepends為False,不包含換行符,如果為T(mén)rue,則保留換行符。split(sep[,maxsplit]])通過(guò)指定分隔符對(duì)字符串進(jìn)行切片,如果參數(shù)maxsplit有指定值,則僅分隔maxsplit個(gè)子字符串,返回分割后的字符串列表。rsplit(sep[,maxsplit]])同split(),不過(guò)是從右邊開(kāi)始。join(seq)把字符串用設(shè)定的連接符連接起來(lái),seq是要連接的元素序列。4.1字符串(str)a='a_b_c_x_y_z'b=a.split(sep='_')#用_把a(bǔ)拆分c=':'.join(b)#用:把b連接起來(lái)。d=''.join(b)#用空白把b連接起來(lái)print(b)#['a','b','c','x','y','z']print(c)#a:b:c:x:y:zprint(d)#abcxyz

變形方法功能lower()轉(zhuǎn)換字符串中所有大寫(xiě)字符為小寫(xiě)。upper()將字符串中的小寫(xiě)字母轉(zhuǎn)為大寫(xiě)字母。capitalize()將字符串的第一個(gè)字母變成大寫(xiě),其他字母變小寫(xiě)。對(duì)于8位字節(jié)編碼需要根據(jù)本地環(huán)境。swapcase()用于對(duì)字符串的大小寫(xiě)字母進(jìn)行轉(zhuǎn)換,大寫(xiě)轉(zhuǎn)小寫(xiě),小寫(xiě)轉(zhuǎn)大寫(xiě)。title()返回"標(biāo)題化"的字符串,就是說(shuō)所有單詞都是以大寫(xiě)開(kāi)始,其余字母均為小寫(xiě)。4.1字符串(str)例4.4分別將字符串'hello,WORLD!首字母大寫(xiě),全部大寫(xiě),全部小寫(xiě)和大小寫(xiě)互換。s='hello,WORLD!'s1=s.capitalize()#首字母大寫(xiě)s2=s.upper()#全部大寫(xiě)s3=s.lower()#全部小寫(xiě)s4=s.swapcase()#大小寫(xiě)互換print(s1)#Hello,world!print(s2)#HELLO,WORLD!print(s3)#hello,world!print(s4)#HELLO,world!4.1字符串(str)刪減與填充方法功能strip([chars])用于移除字符串頭尾指定的字符(默認(rèn)為空格),如果有多個(gè)就會(huì)刪除多個(gè)。lstrip([chars])用于截掉字符串左邊的空格或指定字符。rstrip([chars])用于截掉字符串右邊的空格或指定字符。center(width[,fillchar])返回一個(gè)原字符串,居中,并使用fillchar填充至長(zhǎng)度width的新字符串。默認(rèn)填充為空格。ljust(width[,fillchar])返回一個(gè)原字符串左對(duì)齊,并使用fillchar填充至指定長(zhǎng)度的新字符串,默認(rèn)為空格。如果指定的長(zhǎng)度小于原字符串則返回原字符串。rjust(width[,fillchar])返回一個(gè)原字符串右對(duì)齊,并使用fillchar填充至長(zhǎng)度width的新字符串。如果指定的長(zhǎng)度小于字符串的長(zhǎng)度則返回原字符串。zfill(width)返回指定長(zhǎng)度的字符串,原字符串右對(duì)齊,前面填充0。expandtabs([tabsize])把字符串中的tab符號(hào)('\t')轉(zhuǎn)為適當(dāng)數(shù)量的空格,默認(rèn)情況下是轉(zhuǎn)換為8個(gè)。4.1字符串(str)例4.5閱讀下面程序,寫(xiě)出輸出結(jié)果。x="1111123"print(x.replace("11","A"))#AA123print(x.replace("11",""))#123print(x.replace("","A"))#A1A1A1A1A1A2A3Ax="AA123"print(x.split("1"))#['AA','23']print(x.split("A1"))#['A','23']x="AB12"print(x.split())#空表示任意個(gè)數(shù)的空格,['A','B','12']x=["A","B"]print("".join(x))#list轉(zhuǎn)str時(shí)常用,ABprint("0".join(x))#A0Bprint("123".join(x))#A123Bprint("".join(x))#ABx="AAAAA1"print(x.count("AA"))#2x="ABC123"print(x[::-1])#逆序,'321CBA'4.1字符串(str)列表是任意對(duì)象的有序集合。通過(guò)索引訪問(wèn)列表中指定元素,第一個(gè)元素索引是0,第二個(gè)索引是1,依此類推。list1=[a,b,1,2,[3,4,5,]]list2=["hello","world"]list3=["hello",100,"world",200]list=["hello","world","iGeek","Home"]print(list3[0])#helloprint(list3[1])#worldprint(list3[2:])#['iGeek','Home']4.2列表(list)namesList=['tom','jerry','jhon']fornameinnamesList:print(name)4.2列表(list)namesList=['tom','jerry','jhon']length=len(namesList)i=0whilei<length:print(namesList[i])i+=14.2.1循環(huán)遍歷列表最常用的是使用for循環(huán)遍歷列表,其格式為:for循環(huán)內(nèi)部使用變量in列表namesList=['tom','jerry','jhon']print("----添加之前,列表中的元素----")print(namesList)print("----添加之后,列表中的元素----")namesList.append("james")print(namesList)4.2.2列表的常用操作4.2列表(list)添加元素(append,extend,insert)append()方法:通過(guò)append可以向列表添加元素,并且默認(rèn)添加在列表末尾extend()方法,增加一個(gè)新列表a=['a','b','c']b=['1','2','3']a.append(b)a=['a','b','c']a.insert(1,"hello")print(a)3.3.2while循環(huán)insert()方法是在指定位置index前插入元素object,形式為insert(index,object)4.2列表(list)刪除元素(del,pop,remove)del方法根據(jù)下標(biāo)進(jìn)行刪除pop()方法刪除最后一個(gè)元素remove()方法根據(jù)元素的值進(jìn)行刪除

Name=['華為','小米','云計(jì)算','量子計(jì)算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')delName[2]print(Name)Name=['華為','小米','云計(jì)算','量子計(jì)算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.pop()#也可以傳入下標(biāo)作為參數(shù),刪除該下標(biāo)的元素print(Name)Name=['華為','小米','云計(jì)算','量子計(jì)算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.remove('云計(jì)算')print(Name)4.2列表(list)修改元素Name=['華為','小米','云計(jì)算','量子計(jì)算','人工智能']print('------修改之前------')print(Name)print('------修改之后------')Name[2]='區(qū)塊鏈'print(Name)4.2列表(list)查找元素(in,notin,index,count)name_list=['tom','jerry','alice','james']print('tom'inname_list)#Trueprint('tom'notinname_list)#Falsename_list=['tom','jerry','alice','james','jerry']print(name_list.index('jerry'))#1print(name_list.index('jerry',4,6))#4print(name_list.count('jerry'))#2排序(sort,reverse)a=[1,4,2,3,6,5,9,8,7]print('----原列表----')print(a)print('----reverse----')a.reverse()print(a)print('----sort----')a.sort()print(a)print('----sort(reverse=True)----')a.sort(reverse=True)print(a)4.2列表(list)列表的sort()方法將list按特定順序重新排列,默認(rèn)為由小到大,參數(shù)reverse=True可改為倒序,由大到小。列表的reverse()方法是將list逆置列表嵌套students=['s1','s2','s3','s4','s5','s6','s7','s8','s9','s10','s11','s12']groups=[[],[],[]]forstuinstudents:index=random.randint(0,2)groups[index].append(stu)print("第一組:%s"%(str(groups[0])))print("第一組:%s"%(str(groups[1])))print("第一組:%s"%(str(groups[2])))4.2列表(list)列表嵌套表示列表中的元素又是一個(gè)列表,那么這就是列表的嵌套list1=[[1,2,3],[4,5,6],[7,8,9]]例4.6將12名同學(xué)隨機(jī)分配到3個(gè)組中4.2.3

列表推導(dǎo)式4.2列表(list)列表推導(dǎo)式就是通過(guò)循環(huán)創(chuàng)建列表,是Python生成列表的特有方式,代碼非常簡(jiǎn)潔。print([x*xforxinrange(1,11)])#輸出一個(gè)列表[1,4,9,16,25,36,49,64,81,100]L=[]forxinrange(1,11):L.append(x*x)print(L)

[x*xforxinrange(1,11)ifx%2==0]print([m+nformin'ABC'fornin'123'])例4.7使用列表推導(dǎo)式求解百錢(qián)買(mǎi)百雞問(wèn)題。假設(shè)大雞5元一只,中雞3元一只,小雞1元三只,現(xiàn)有100元錢(qián)想買(mǎi)100只雞,有多少種買(mǎi)法?方法如下:4.2列表(list)L=[(i,j,k)foriinrange(0,100)forjinrange(0,100)forkinrange(0,100)ifi+j+k==100and5*i+3*j+k/3==100]foriinL:print(i)例4.8輸入的一個(gè)字符串,判斷每個(gè)字符是否為大寫(xiě)字母、小寫(xiě)字母、數(shù)字和其它字符,并把每一類放在列表中輸出。upper=[];lower=[]num=[];other=[]astring=input("pleaseinputastring:")foriinrange(len(astring)):ifastring[i].isupper():upper.append(astring[i])elifastring[i].islower():lower.append(astring[i])elifastring[i].isnumeric():num.append(astring[i])else:other.append(astring[i])print("upper:",upper)print("lower:",lower)print("num:",num)print("other:",other)4.2列表(list)

元組是任意對(duì)象的有序集合,使用“()”,元組具有不可更改的特性4.3元組(tuple)4.3.1元組創(chuàng)建與訪問(wèn)tp=(1,3,4,5,6)tp=(1,)t0=()#空元組,等價(jià)于t0=tuple()t1=tuple([1,2,3,4])#把列表轉(zhuǎn)換成元組tp=(1,2,3,4)print(tp[0])#顯示1print(tp[2])#顯示3tp[0]=10#TypeError:'tuple'objectdoesnotsupportitemassignment使用for循環(huán)遍歷元組,如:names=('Joker','Joe','Jack')fornameinnames:print(name,end=’,’)#輸出Joker,Joe,Jack,4.3.2序列封包與解包x,y,z=1,2,3#相當(dāng)于x=1,y=2,z=3x,y,z=range(3)#可以對(duì)range對(duì)象進(jìn)行序列解包a,b=b,a#交換兩個(gè)數(shù)4.3元組(tuple)封包:把多個(gè)值賦值給一個(gè)變量,這時(shí)會(huì)自動(dòng)將這些值封裝成元組解包:把一個(gè)序列(列表、元組、字符串等)直接賦給多個(gè)變量a,b,c,*rest=range(6)print(rest)#[3,4,5]print(type(rest))#<class'list'>*front,last=range(6)print(front)#[0,1,2,3,4]front,*middle,last=range(6)print(middle)#[1,2,3,4]序列解包時(shí),也可以只解出部分變量,剩下的使用列表變量保存,只需在被賦值的變量之前添加“*”,那么該變量就代表一個(gè)列表,保存未解包的多個(gè)元素。4.3.3生成器推導(dǎo)式g=(x**2forxinrange(4))print(type(g))#<class'generator'>print(tuple(g))#轉(zhuǎn)換為元組然后輸出(0,1,4,9)4.3元組(tuple)生成器(Generator)它是集合抽象基類(CollectionsAbstractBaseClasses,Collections.abc)中的一種類型。g=(x**2forxinrange(4)ifx>0)print(list(g))#[1,4,9]

同列表推導(dǎo)式一樣,生成器推導(dǎo)式也可以進(jìn)行條件判斷,增加if語(yǔ)句,篩選出符合條件的元素4.3.4可迭代與迭代器4.3元組(tuple)可迭代(Iterable)與迭代器(Iterator)是集合抽象基類(CollectionsAbstractBaseClasses,Collections.abc)中的兩個(gè)類型。fromcollections.abcimportIterableprint(isinstance('123',Iterable))#True,str對(duì)象可迭代print(isinstance([1,2,3],Iterable))#True,list對(duì)象可迭代print(isinstance(123,Iterable))#False,整數(shù)不可迭代print(isinstance(range(4),Iterable))#True,range對(duì)象可迭代可迭代對(duì)象:通過(guò)for循環(huán)遍歷的對(duì)象迭代器對(duì)象:能夠被next()函數(shù)調(diào)用并不斷返回下一個(gè)元素的對(duì)象fromcollections.abcimportIteratorprint(isinstance((xforxinrange(10)),Iterator))#Trueprint(isinstance([1,2,3],Iterator))#Falseprint(isinstance((1,2,3),Iterator))#Falseprint(isinstance('123',Iterator))#Falseprint(next([1,2,3]))#TypeError:'list'objectisnotaniterator4.3元組(tuple)可以看出,生成器是Iterator對(duì)象,而列表、元組和字符串對(duì)象不是Iterator對(duì)象,因?yàn)樗麄儾恢С謓ext()方法,可以使用iter()方法把他們變成Iterator對(duì)象fromcollections.abcimportIteratorprint(isinstance(iter([1,2,3]),Iterator))#Trueprint(next(iter([1,2,3])))#1,每一次next返回下一個(gè)元素。4.3元組(tuple)Collections.abc中的Iterable、Iterator和Generator對(duì)象既有聯(lián)系又有區(qū)別。字典(dictionary)是用{"key":"value"}表示的鍵值對(duì),通過(guò)key能夠快速查找對(duì)應(yīng)的value。字典可以存儲(chǔ)不同類型的數(shù)據(jù),具有可變性#創(chuàng)建一個(gè)簡(jiǎn)單的dict,該dict的key是字符串,value是整數(shù)scores={'語(yǔ)文':89,'數(shù)學(xué)':92,'英語(yǔ)':93}empty_dict={}#空的dict,等價(jià)于empty_dict=dict()dict2={(20,30):'good',30:'bad'}#使用元組作為dict的keyprint(scores)print(empty_dict)print(dict2)4.4字典(dict)注意:鍵必須是唯一的,因?yàn)橥ㄟ^(guò)鍵來(lái)查找對(duì)應(yīng)的值;鍵必須是不可變數(shù)據(jù)類型:數(shù)字、字符串或元組類型;列表不能作為元組的key,dict要求key必須是不可變類型;字典中的鍵值對(duì)是無(wú)序的,這并不影響使用。4.4.1字典的鍵值對(duì)4.4字典(dict)通過(guò)key訪問(wèn)valuescores={'語(yǔ)文':89}print(scores['語(yǔ)文'])scores['數(shù)學(xué)']=93scores[92]=5.7print(scores)#{'語(yǔ)文':89,'數(shù)學(xué)':93,92:5.7}delscores['語(yǔ)文']#使用del語(yǔ)句刪除key-value對(duì)delscores['數(shù)學(xué)']print(scores)#{92:5.7}cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}#對(duì)存在的key-value對(duì)賦值,改變key-value對(duì)cars['紅旗']=4.3cars['長(zhǎng)城']=3.8print(cars)#{'比亞迪':8.3,'紅旗':4.3,'長(zhǎng)城':3.8}4.4字典(dict)判斷字典是否包含指定的keycars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}#判斷cars是否包含名為'比亞迪'的keyprint('比亞迪'incars)#True#判斷cars是否包含名為'吉利'的keyprint('吉利'incars)#Falseprint('吉利'notincars)#True4.4.2字典的常用方法>>>dir(dict)['clear','copy','fromkeys','get','items','keys','pop','popitem','setdefault','update','values']>>>4.4字典(dict)cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}print(cars)#{'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}#清空cars所有key-value對(duì)cars.clear()clear()方法4.4字典(dict)get()方法scores={'語(yǔ)文':89,'數(shù)學(xué)':92,'英語(yǔ)':93}print(scores.get('語(yǔ)文'))#89print(scores.get('歷史'))#Noneprint(scores.get('地理',99)#99students={'Zhangsan':{'數(shù)據(jù)結(jié)構(gòu)':90,'計(jì)算機(jī)網(wǎng)絡(luò)':88,'計(jì)算機(jī)組成原理':98},'Lisi':{'西方經(jīng)濟(jì)學(xué)':88,'統(tǒng)計(jì)學(xué)':96,'發(fā)展經(jīng)濟(jì)學(xué)':87}}print(students['Lisi'].get('統(tǒng)計(jì)學(xué)'))#96print(students.get('Lisi').get('統(tǒng)計(jì)學(xué)'))#964.4字典(dict)update()方法cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}cars.update({'紅旗':4.5,'吉利':9.3})print(cars)#{'紅旗':4.5,'比亞迪':8.3,'長(zhǎng)城':7.9,'吉利':9.3}

items()、keys()和values()方法cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}ims=cars.items()print(type(ims))#<class'dict_items'>print(list(ims))#[('紅旗',8.5),('比亞迪',8.3),('長(zhǎng)城',7.9)]kys=cars.keys()print(type(kys))#<class'dict_keys'>print(list(kys))#['紅旗','比亞迪','長(zhǎng)城']vals=cars.values()print(type(vals))#<class'dict_values'>print(list(vals)[1])#8.34.4字典(dict)pop方法cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}print(cars.pop('比亞迪'))#8.3print(cars)#'紅旗':8.5,'長(zhǎng)城':7.9}

popitem()方法cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}print(cars)#{'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}#彈出字典底層存儲(chǔ)的最后一個(gè)key-value對(duì)print(cars.popitem())#('長(zhǎng)城',7.9)print(cars)#{'紅旗':8.5,'比亞迪':8.3}#將彈出項(xiàng)的key賦值給k、value賦值給vk,v=cars.popitem()print(k,v)#長(zhǎng)城

7.9setdefault()方法cars={'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9}#設(shè)置默認(rèn)值,該key在dict中不存在,新增key-value對(duì)print(cars.setdefault('吉利',9.2))#9.2print(cars)#設(shè)置默認(rèn)值,該key在dict中存在,不會(huì)修改dict內(nèi)容print(cars.setdefault('紅旗',3.4))#8.5print(cars)#{'紅旗':8.5,'比亞迪':8.3,'長(zhǎng)城':7.9,'吉利':9.2}4.4字典(dict)fromkeys()方法a_dict=dict.fromkeys(['a','b'])print(a_dict)#{'a':None,'b':None}#使用元組創(chuàng)建包含2個(gè)key的字典b_dict=dict.fromkeys((13,17))print(b_dict)#{13:None,17:None}#使用元組創(chuàng)建包含2個(gè)key的字典,指定默認(rèn)的valuec_dict=dict.fromkeys((13,17),'good')print(c_dict)#{13:'good',17:'good'}4.5.1集合的創(chuàng)建s1={10,20,30,10,50}s2={}#這是空字典,空集合不能通過(guò){}創(chuàng)建。s3=set()#空集合只能通過(guò)set()創(chuàng)建。s4=set([1,2,3,4,5])#列表轉(zhuǎn)換為集合。s5={'a','a','a'}#字典里元素不能重復(fù)。s6=set('myname')#用字符串創(chuàng)建集合,去除重復(fù)元素,得到:{‘m’,’y’,’n’,’a’,’e’}4.5集合(set)注意:跟字典的鍵不能是可變對(duì)象一樣,集合里面也不能是列表、集合、字典。常利用字典元素不重復(fù)的特點(diǎn)進(jìn)行去重。4.5.2集合常用方法4.5集合(set)新增一個(gè)元素到集合set1={'a','z','b',4,6,1}set1.add(8)set1.add('hello')print(set1)清空集合所有元素set1={'a','z','b',4,6,1}set1.clear()print(set1)#set()拷貝整個(gè)集合并賦值給變量set1={'a','z','b',4,6,1}set2=set1.copy()print(set2)#{1,'a',4,6,'b','z'}4.5集合(set)隨機(jī)刪除集合中一個(gè)元素set1={'a','z','b',4,6,1}ys=set1.pop()print('set1集合:',set1)print('刪除的元素:',ys)4.5集合(set)隨機(jī)刪除集合中指定元素set1={'a','z','b',4,6,1}set1.discard('a')print(set1)set1.discard('y')print(set1)4.5.3集合運(yùn)算4.5集合(set)集合運(yùn)算主要有求集合的交集、并集、子集、補(bǔ)集和差集等,這些運(yùn)算既可以通過(guò)相應(yīng)的函數(shù)實(shí)現(xiàn),也可以通過(guò)運(yùn)算符實(shí)現(xiàn)。集合運(yùn)算函數(shù)功能簡(jiǎn)要描述difference()返回兩個(gè)或多個(gè)集合的差作為新集合difference_update()從該集合中刪除另一個(gè)集合的所有元素intersection()返回兩個(gè)集合的交集作為新集合intersection_update()用自身和另一個(gè)的交集更新集合isdisjoint()如兩個(gè)集合的交集為空,則返回

Trueissubset()判斷是否是子集,是就返回

Trueissuperset()是否包含另一個(gè)集合,是就返回

Truesymmetric_difference()返回兩個(gè)集合的對(duì)稱差作為新集合union()返回新集合中集合的并集update()用自身和其他元素的并集更新集合集合的交集(&)并集(|)差(–)A={1,2,3,4,5},B={3,4,5,6,7}result=A&B#A.intersection(B),結(jié)果是{3,4,5}result=A|B#A.union(B),結(jié)果是{1,2,3,4,5,6,7}result=A-B#A.difference(B),結(jié)果是{1,2}4.5集合(set)集合的異或(^)(又叫對(duì)稱差)子集(<=)真子集(<)A={1,2,3,4,5},B={3,4,5,6,7}result=A^B#A.symmetric_difference(B),結(jié)果是{1,2,6,7}a={1,2,3}b={1,2,3,4,5}result=a<=b#True,等價(jià)于a.issubset(b)result={1,2,3}<={1,2,3}#Trueresult={1,2,3,4,5}<={1,2,3}#Falseresult={1,2,3}<{1,2,3}#Falseresult={1,2,3}<{1,2,3,4,5}#True集合成員測(cè)試與遍歷(in)A=set("apple")#初始化A,檢查“a”是否存在。print('a'inA)#輸出:Trueprint('p'notinA)#檢查“p”是否存在,輸出:FalseB={'1','2',"star"}foriteminB:#用for循環(huán)遍歷

print(item,end='')print('\n')forletterinset("apple"):print(letter)#輸出集合所有元素4.5集合(set)注意:遍歷集合輸出時(shí)所顯示的順序具有隨機(jī)性,與運(yùn)行環(huán)境相關(guān)。

4.5.4不可變集合#初始化不可變集A和BA=frozenset([1,2,3,4])B=frozenset([3,4,5,6])print(A.isdisjoint(B))#顯示:Falseprint(A.difference(B))#顯示:frozenset({1,2})print(A|B)#顯示:frozenset({1,2,3,4,5,6})C=frozenset({1,2,3,4,5,6})C.add(3)#AttributeError:'frozenset'objecthasnoattribute'add'4.5集合(set)Frozenset是具有集合特征的新類,一旦分配,就不能更改其元素,是不可變集合,類似元組是不可變列表??勺兗希╯et)不可散列,因此不能用作字典鍵。frozenset是可哈希的,可用作字典的鍵。可以使用函數(shù)Frozenset()創(chuàng)建Frozensets對(duì)象。Frozensets對(duì)象支持的方法有copy(),difference(),intersection(),isdisjoint(),issubset(),issuperset(),symmetric_difference()和union()等在交互式命令行中輸入命令:dir(__builtins__),查看內(nèi)置函數(shù)4.6常用內(nèi)置函數(shù)4.6常用內(nèi)置函數(shù)函數(shù)功能簡(jiǎn)要說(shuō)明len(seq)計(jì)算序列seq元素個(gè)數(shù)。max(seq)返回序列seq中元素最大值min(seq)返回序列seq中元素最小值sum(seq)返回?cái)?shù)值型序列的和exec()執(zhí)行python語(yǔ)句enumerate()將可遍歷對(duì)象組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo)filter(func,iterable)通過(guò)判斷函數(shù)fun,篩選符合條件的元素map(func,iterable)將func用于每個(gè)iterable對(duì)象zip(*iterable)將iterable分組合并,返回一個(gè)zip對(duì)象type()返回一個(gè)對(duì)象的類型。id()返回一個(gè)對(duì)象的唯一標(biāo)識(shí)值hash(object)返回一個(gè)對(duì)象的hash值help()調(diào)用系統(tǒng)內(nèi)置的幫助系統(tǒng)isinstance()判斷一個(gè)對(duì)象是否為該類的實(shí)例reversed(sequence)生成一個(gè)反轉(zhuǎn)序列的迭代器對(duì)象sorted()返回排序后的列表

enumerate()方法equipmentName=['華為Mate7','華為Mate8','華為Mate9','華為P40','華為P50']forindex,phoneNameinenumerate(equipmentName,1):#指定index的起始值為1print(index,":",phoneName)4.6常用內(nèi)置函數(shù)對(duì)于一個(gè)可迭代對(duì)象(如列表,字符串等),enumerate()方法將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值,多用于for循環(huán)中計(jì)數(shù)。

zip()方法a=[1,2,3]b=['a','b','c']z=zip(a,b)#zip將對(duì)象逐一匹配foriinz:print(i)4.6常用內(nèi)置函數(shù)zip()方法將可迭代對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素組成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象。形式為zip([iterable,...]),參數(shù)iterabl表示一個(gè)或多個(gè)迭代對(duì)象,如果各個(gè)迭代對(duì)象的元素個(gè)數(shù)不一致,則返回對(duì)象的長(zhǎng)度與最短的對(duì)象相同。

filter()方法defcompare(x):returnx>5result=filter(compare,[1,2,3,4,5,6,7,8,9,10,11])foriinresult:print(i,end=’’)##678910114.6常用內(nèi)置函數(shù)filter()函數(shù)用于過(guò)濾序列,過(guò)濾掉不符合條件的元素,接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回True或False,返回一個(gè)只包含True的元素迭代器對(duì)象

map()方法deff(x):returnx*xprint(list(map(f,[1,2,3,4,5])))

溫馨提示

  • 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)論