Python科學(xué)計算及應(yīng)用課件:Python序列計算_第1頁
Python科學(xué)計算及應(yīng)用課件:Python序列計算_第2頁
Python科學(xué)計算及應(yīng)用課件:Python序列計算_第3頁
Python科學(xué)計算及應(yīng)用課件:Python序列計算_第4頁
Python科學(xué)計算及應(yīng)用課件:Python序列計算_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

Python序列計算集合(set)4.5常用內(nèi)置函數(shù)4.6字典(dict)4.4數(shù)據(jù)類型轉(zhuǎn)換4.74.1字符串(str)字符串是由一對單引號,雙引號或三引號之間包含內(nèi)容組成的符號序列,是一個有序的字符集合,用于存儲和表示文本信息,是不可變對象。如果需要嵌套引號,則不允許出現(xiàn)單引號嵌套單引號,雙引號嵌套雙引號的現(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)用格式符號%s時,形式是print('%s'%('字符串')),變量超過2個使用元組格式,如print("%s,%s"%(字符串1,字符串2)),%s表示字符串的位置。傳入的值要與%s一一對應(yīng)。name='張三'position='python程序員'address='湖北武漢市東湖新技術(shù)開發(fā)區(qū)'print('-'*50)print("姓名:%s"%name)print("職位:%s"%position)print("公司地址:%s"%address)print('-'*50)4.1字符串(str)str.format()方法print('...{索引},...,{索引},...'.format(值1,值2))#單引號可以換成雙引號和三引號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使用簡單,而且效率也更高。f-string是字符串前面加上"f",{}內(nèi)直接使用變量、表達(dá)式等4.1.2字符串輸入username=input('請輸入用戶名:')print("用戶名為:%s"%username)password=input('請輸入密碼:')print("密碼為:%s"%password)4.1字符串(str)下標(biāo)(索引)就是編號,切片(slice)是指對操作的對象截取其中一部分的操作。4.1.3下標(biāo)和切片

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

已知字符串為str='0123456789′,輸出以下切片。str="0123456789"print(str[0:3])#012,截取第一位到第三位的字符。print(str[:])#0123456789,截取字符串的全部字符。print(str[6:])#6789,截取第七個字符到結(jié)尾。print(str[:-3])#0123456,截取從頭開始到倒數(shù)第三個字符之前。print(str[2])#2,截取第三個字符。print(str[-1])#9,截取倒數(shù)第一個字符。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,按照步長為二,返回所有值。4.1字符串(str)4.1.4字符串常見操作

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

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

True,否則返

False。endswith(suffix[,start[,end]])用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回True,否則返回False。4.1字符串(str)例4.2閱讀下面程序,寫出輸出結(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)計字符串里某個字符sub出現(xiàn)的次數(shù)。find(sub[,start[,end]])檢測字符串中是否包含子字符串sub,如果包含子字符串返回開始的索引值,否則返回-1。index(sub[,start[,end]]跟find()方法一樣,如果sub不在string中會拋出ValueError異常。rfind(sub[,start[,end]])類似于find()函數(shù),從右邊開始查找。rindex(sub[,start[,end]])類似于index(),從右邊開始。replace(old,new[,count])用來替換字符串的某些子串,用new替換old。如果指定count參數(shù),最多替換count次,如果不指定,就全部替換。4.1字符串(str)例4.3閱讀下面程序,寫出輸出結(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)用來根據(jù)指定的分隔符將字符串進(jìn)行分割,如果字符串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。如果sep沒有出現(xiàn)在字符串中,則返回值為(sep,",")。rpartition(sep)類似于partition()函數(shù),不過是從右邊開始查找.splitness([keepends])按照行('\r','\r\n',\n')分隔,返回一個包含各行作為元素的列表,如果參數(shù)keepends為False,不包含換行符,如果為True,則保留換行符。split(sep[,maxsplit]])通過指定分隔符對字符串進(jìn)行切片,如果參數(shù)maxsplit有指定值,則僅分隔maxsplit個子字符串,返回分割后的字符串列表。rsplit(sep[,maxsplit]])同split(),不過是從右邊開始。join(seq)把字符串用設(shè)定的連接符連接起來,seq是要連接的元素序列。4.1字符串(str)a='a_b_c_x_y_z'b=a.split(sep='_')#用_把a拆分c=':'.join(b)#用:把b連接起來。d=''.join(b)#用空白把b連接起來print(b)#['a','b','c','x','y','z']print(c)#a:b:c:x:y:zprint(d)#abcxyz

變形方法功能lower()轉(zhuǎn)換字符串中所有大寫字符為小寫。upper()將字符串中的小寫字母轉(zhuǎn)為大寫字母。capitalize()將字符串的第一個字母變成大寫,其他字母變小寫。對于8位字節(jié)編碼需要根據(jù)本地環(huán)境。swapcase()用于對字符串的大小寫字母進(jìn)行轉(zhuǎn)換,大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫。title()返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫。4.1字符串(str)例4.4分別將字符串'hello,WORLD!首字母大寫,全部大寫,全部小寫和大小寫互換。s='hello,WORLD!'s1=s.capitalize()#首字母大寫s2=s.upper()#全部大寫s3=s.lower()#全部小寫s4=s.swapcase()#大小寫互換print(s1)#Hello,world!print(s2)#HELLO,WORLD!print(s3)#hello,world!print(s4)#HELLO,world!4.1字符串(str)刪減與填充方法功能strip([chars])用于移除字符串頭尾指定的字符(默認(rèn)為空格),如果有多個就會刪除多個。lstrip([chars])用于截掉字符串左邊的空格或指定字符。rstrip([chars])用于截掉字符串右邊的空格或指定字符。center(width[,fillchar])返回一個原字符串,居中,并使用fillchar填充至長度width的新字符串。默認(rèn)填充為空格。ljust(width[,fillchar])返回一個原字符串左對齊,并使用fillchar填充至指定長度的新字符串,默認(rèn)為空格。如果指定的長度小于原字符串則返回原字符串。rjust(width[,fillchar])返回一個原字符串右對齊,并使用fillchar填充至長度width的新字符串。如果指定的長度小于字符串的長度則返回原字符串。zfill(width)返回指定長度的字符串,原字符串右對齊,前面填充0。expandtabs([tabsize])把字符串中的tab符號('\t')轉(zhuǎn)為適當(dāng)數(shù)量的空格,默認(rèn)情況下是轉(zhuǎn)換為8個。4.1字符串(str)例4.5閱讀下面程序,寫出輸出結(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())#空表示任意個數(shù)的空格,['A','B','12']x=["A","B"]print("".join(x))#list轉(zhuǎn)str時常用,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)列表是任意對象的有序集合。通過索引訪問列表中指定元素,第一個元素索引是0,第二個索引是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()方法:通過append可以向列表添加元素,并且默認(rèn)添加在列表末尾extend()方法,增加一個新列表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()方法刪除最后一個元素remove()方法根據(jù)元素的值進(jìn)行刪除

Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')delName[2]print(Name)Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.pop()#也可以傳入下標(biāo)作為參數(shù),刪除該下標(biāo)的元素print(Name)Name=['華為','小米','云計算','量子計算','人工智能']print('------刪除之前------')print(Name)print('------刪除之后------')Name.remove('云計算')print(Name)4.2列表(list)修改元素Name=['華為','小米','云計算','量子計算','人工智能']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)列表嵌套表示列表中的元素又是一個列表,那么這就是列表的嵌套list1=[[1,2,3],[4,5,6],[7,8,9]]例4.6將12名同學(xué)隨機(jī)分配到3個組中4.2.3

列表推導(dǎo)式4.2列表(list)列表推導(dǎo)式就是通過循環(huán)創(chuàng)建列表,是Python生成列表的特有方式,代碼非常簡潔。print([x*xforxinrange(1,11)])#輸出一個列表[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)式求解百錢買百雞問題。假設(shè)大雞5元一只,中雞3元一只,小雞1元三只,現(xiàn)有100元錢想買100只雞,有多少種買法?方法如下: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輸入的一個字符串,判斷每個字符是否為大寫字母、小寫字母、數(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)

元組是任意對象的有序集合,使用“()”,元組具有不可更改的特性4.3元組(tuple)4.3.1元組創(chuàng)建與訪問tp=(1,3,4,5,6)tp=(1,)t0=()#空元組,等價于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)#可以對range對象進(jìn)行序列解包a,b=b,a#交換兩個數(shù)4.3元組(tuple)封包:把多個值賦值給一個變量,這時會自動將這些值封裝成元組解包:把一個序列(列表、元組、字符串等)直接賦給多個變量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]序列解包時,也可以只解出部分變量,剩下的使用列表變量保存,只需在被賦值的變量之前添加“*”,那么該變量就代表一個列表,保存未解包的多個元素。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語句,篩選出符合條件的元素4.3.4可迭代與迭代器4.3元組(tuple)可迭代(Iterable)與迭代器(Iterator)是集合抽象基類(CollectionsAbstractBaseClasses,Collections.abc)中的兩個類型。fromcollections.abcimportIterableprint(isinstance('123',Iterable))#True,str對象可迭代print(isinstance([1,2,3],Iterable))#True,list對象可迭代print(isinstance(123,Iterable))#False,整數(shù)不可迭代print(isinstance(range(4),Iterable))#True,range對象可迭代可迭代對象:通過for循環(huán)遍歷的對象迭代器對象:能夠被next()函數(shù)調(diào)用并不斷返回下一個元素的對象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對象,而列表、元組和字符串對象不是Iterator對象,因為他們不支持next()方法,可以使用iter()方法把他們變成Iterator對象fromcollections.abcimportIteratorprint(isinstance(iter([1,2,3]),Iterator))#Trueprint(next(iter([1,2,3])))#1,每一次next返回下一個元素。4.3元組(tuple)Collections.abc中的Iterable、Iterator和Generator對象既有聯(lián)系又有區(qū)別。字典(dictionary)是用{"key":"value"}表示的鍵值對,通過key能夠快速查找對應(yīng)的value。字典可以存儲不同類型的數(shù)據(jù),具有可變性#創(chuàng)建一個簡單的dict,該dict的key是字符串,value是整數(shù)scores={'語文':89,'數(shù)學(xué)':92,'英語':93}empty_dict={}#空的dict,等價于empty_dict=dict()dict2={(20,30):'good',30:'bad'}#使用元組作為dict的keyprint(scores)print(empty_dict)print(dict2)4.4字典(dict)注意:鍵必須是唯一的,因為通過鍵來查找對應(yīng)的值;鍵必須是不可變數(shù)據(jù)類型:數(shù)字、字符串或元組類型;列表不能作為元組的key,dict要求key必須是不可變類型;字典中的鍵值對是無序的,這并不影響使用。4.4.1字典的鍵值對4.4字典(dict)通過key訪問valuescores={'語文':89}print(scores['語文'])scores['數(shù)學(xué)']=93scores[92]=5.7print(scores)#{'語文':89,'數(shù)學(xué)':93,92:5.7}delscores['語文']#使用del語句刪除key-value對delscores['數(shù)學(xué)']print(scores)#{92:5.7}cars={'紅旗':8.5,'比亞迪':8.3,'長城':7.9}#對存在的key-value對賦值,改變key-value對cars['紅旗']=4.3cars['長城']=3.8print(cars)#{'比亞迪':8.3,'紅旗':4.3,'長城':3.8}4.4字典(dict)判斷字典是否包含指定的keycars={'紅旗':8.5,'比亞迪':8.3,'長城':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,'長城':7.9}print(cars)#{'紅旗':8.5,'比亞迪':8.3,'長城':7.9}#清空cars所有key-value對cars.clear()clear()方法4.4字典(dict)get()方法scores={'語文':89,'數(shù)學(xué)':92,'英語':93}print(scores.get('語文'))#89print(scores.get('歷史'))#Noneprint(scores.get('地理',99)#99students={'Zhangsan':{'數(shù)據(jù)結(jié)構(gòu)':90,'計算機(jī)網(wǎng)絡(luò)':88,'計算機(jī)組成原理':98},'Lisi':{'西方經(jīng)濟(jì)學(xué)':88,'統(tǒng)計學(xué)':96,'發(fā)展經(jīng)濟(jì)學(xué)':87}}print(students['Lisi'].get('統(tǒng)計學(xué)'))#96print(students.get('Lisi').get('統(tǒng)計學(xué)'))#964.4字典(dict)update()方法cars={'紅旗':8.5,'比亞迪':8.3,'長城':7.9}cars.update({'紅旗':4.5,'吉利':9.3})print(cars)#{'紅旗':4.5,'比亞迪':8.3,'長城':7.9,'吉利':9.3}

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

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

7.9setdefault()方法cars={'紅旗':8.5,'比亞迪':8.3,'長城':7.9}#設(shè)置默認(rèn)值,該key在dict中不存在,新增key-value對print(cars.setdefault('吉利',9.2))#9.2print(cars)#設(shè)置默認(rèn)值,該key在dict中存在,不會修改dict內(nèi)容print(cars.setdefault('紅旗',3.4))#8.5print(cars)#{'紅旗':8.5,'比亞迪':8.3,'長城':7.9,'吉利':9.2}4.4字典(dict)fromkeys()方法a_dict=dict.fromkeys(['a','b'])print(a_dict)#{'a':None,'b':None}#使用元組創(chuàng)建包含2個key的字典b_dict=dict.fromkeys((13,17))print(b_dict)#{13:None,17:None}#使用元組創(chuàng)建包含2個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={}#這是空字典,空集合不能通過{}創(chuàng)建。s3=set()#空集合只能通過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)注意:跟字典的鍵不能是可變對象一樣,集合里面也不能是列表、集合、字典。常利用字典元素不重復(fù)的特點進(jìn)行去重。4.5.2集合常用方法4.5集合(set)新增一個元素到集合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()拷貝整個集合并賦值給變量set1={'a','z','b',4,6,1}set2=set1.copy()print(set2)#{1,'a',4,6,'b','z'}4.5集合(set)隨機(jī)刪除集合中一個元素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集合運算4.5集合(set)集合運算主要有求集合的交集、并集、子集、補集和差集等,這些運算既可以通過相應(yīng)的函數(shù)實現(xiàn),也可以通過運算符實現(xiàn)。集合運算函數(shù)功能簡要描述difference()返回兩個或多個集合的差作為新集合difference_update()從該集合中刪除另一個集合的所有元素intersection()返回兩個集合的交集作為新集合intersection_update()用自身和另一個的交集更新集合isdisjoint()如兩個集合的交集為空,則返回

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

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

Truesymmetric_difference()返回兩個集合的對稱差作為新集合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)集合的異或(^)(又叫對稱差)子集(<=)真子集(<)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,等價于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集合成員測試與遍歷(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)注意:遍歷集合輸出時所顯示的順序具有隨機(jī)性,與運行環(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是具有集合特征的新類,一旦分配,就不能更改其元素,是不可變集合,類似元組是不可變列表。可變集合(set)不可散列,因此不能用作字典鍵。frozenset是可哈希的,可用作字典的鍵??梢允褂煤瘮?shù)Frozenset()創(chuàng)建Frozensets對象。Frozensets對象支持的方法有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ù)功能簡要說明len(seq)計算序列seq元素個數(shù)。max(seq)返回序列seq中元素最大值min(seq)返回序列seq中元素最小值sum(seq)返回數(shù)值型序列的和exec()執(zhí)行python語句enumerate()將可遍歷對象組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo)filter(func,iterable)通過判斷函數(shù)fun,篩選符合條件的元素map(func,iterable)將func用于每個iterable對象zip(*iterable)將iterable分組合并,返回一個zip對象type()返回一個對象的類型。id()返回一個對象的唯一標(biāo)識值hash(object)返回一個對象的hash值help()調(diào)用系統(tǒng)內(nèi)置的幫助系統(tǒng)isinstance()判斷一個對象是否為該類的實例reversed(sequence)生成一個反轉(zhuǎn)序列的迭代器對象sorted()返回排序后的列表

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

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

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ù)用于過濾序列,過濾掉不符合條件的元素,接收兩個參數(shù),第一個為函數(shù),第二個為序列,序列的每個元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回True或False,返回一個只包含True的元素迭代器對象

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

溫馨提示

  • 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

提交評論