Python編程基礎(chǔ)(第3版)(微課版)課件 3.5 創(chuàng)建集合并進(jìn)行集合運(yùn)算_第1頁
Python編程基礎(chǔ)(第3版)(微課版)課件 3.5 創(chuàng)建集合并進(jìn)行集合運(yùn)算_第2頁
Python編程基礎(chǔ)(第3版)(微課版)課件 3.5 創(chuàng)建集合并進(jìn)行集合運(yùn)算_第3頁
Python編程基礎(chǔ)(第3版)(微課版)課件 3.5 創(chuàng)建集合并進(jìn)行集合運(yùn)算_第4頁
Python編程基礎(chǔ)(第3版)(微課版)課件 3.5 創(chuàng)建集合并進(jìn)行集合運(yùn)算_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

創(chuàng)建集合并進(jìn)行集合運(yùn)算1集合運(yùn)算目錄創(chuàng)建集合2集合常用方法和函數(shù)3【任務(wù)3-4】實現(xiàn)學(xué)生選課信息查詢4Python中的集合類型數(shù)據(jù)結(jié)構(gòu)是將各不相同的不可變數(shù)據(jù)對象無序地集中起來的容器。類似于字典中的鍵,集合中的元素都是不可重復(fù)的,并且屬于不可變數(shù)據(jù)類型,元素之間沒有排列順序。Python中的集合類型相當(dāng)于數(shù)學(xué)集合論中所定義的集合,人們可以對集合對象進(jìn)行數(shù)學(xué)集合運(yùn)算。創(chuàng)建集合可變集合對象屬于可變數(shù)據(jù)類型,可以進(jìn)行元素的增添、刪除等處理,處理結(jié)果直接作用在對象上。使用花括號可以創(chuàng)建可變集合,傳入的元素必須是不可變數(shù)據(jù)類型,即不能傳入列表、字典或可變集合等??勺兗系膕et函數(shù)能夠?qū)?shù)據(jù)結(jié)構(gòu)對象轉(zhuǎn)換為可變集合類型,即將集合元素存儲為一個列表或元組,再將其轉(zhuǎn)換為可變集合。創(chuàng)建可變集合的應(yīng)用示例如下。1.可變集合>>>#使用花括號創(chuàng)建可變集合>>>myset1={'A','C','D','B','A','B'}>>>print(myset1){'C','D','B','A'}>>>#使用set函數(shù)創(chuàng)建可變集合>>>myset2=set([2,3,1,4,False,2.5,'one'])>>>print(myset2){False,1,2,3,4,2.5,'one'}>>>empty_set=set()#創(chuàng)建空可變集合>>>print(empty_set)set()>>>print(type(empty_set))<class'set'>1.可變集合不可變集合對象屬于不可變數(shù)據(jù)類型,不能對其中的元素進(jìn)行修改。創(chuàng)建不可變集合的方法是使用frozenset函數(shù)。其返回的結(jié)果是一個不可變集合。傳入的元素必須為不可變數(shù)據(jù)類型。當(dāng)使用frozenset函數(shù)且不傳入任何參數(shù)時,會創(chuàng)建一個空不可變集合。創(chuàng)建不可變集合的應(yīng)用示例如下。2.不可變集合>>>myset3=frozenset([3,2,3,'one',frozenset([1,2]),True])>>>#使用frozenset函數(shù)創(chuàng)建不可變集合>>>print(myset3)frozenset({True,2,3,'one',frozenset({1,2})})>>>empty_frozenset=frozenset()#創(chuàng)建空不可變集合>>>print(empty_frozenset)frozenset()>>>print(type(empty_frozenset))<class'frozenset'>2.不可變集合1集合運(yùn)算目錄創(chuàng)建集合2集合常用方法和函數(shù)3【任務(wù)3-4】實現(xiàn)學(xué)生選課信息查詢4集合是由互不相同的元素構(gòu)成的無序整體。集合涉及多種運(yùn)算,通過這些運(yùn)算能得到滿足某些條件的元素的集合。常用的集合運(yùn)算包括求并集、求交集、求差集、求異或集等。例如,學(xué)生A喜歡的運(yùn)動項目的集合為{'足球','游泳','羽毛球','乒乓球'},而學(xué)生B喜歡的運(yùn)動項目的集合為{'籃球','乒乓球','羽毛球','排球'},要獲取兩個學(xué)生都喜歡的運(yùn)動項目,或獲取除了學(xué)生B喜歡的運(yùn)動項目外,還有哪些運(yùn)動項目是學(xué)生A喜歡的,即可通過集合運(yùn)算來實現(xiàn)。集合運(yùn)算由屬于集合A和B的所有元素組成的集合稱為集合A和B的并集,數(shù)學(xué)表達(dá)式為或。并集與集合A和B之間的關(guān)系如下圖,其中陰影部分即為并集。根據(jù)并集的數(shù)學(xué)定義,上述例子中,集合A和集合B的并集為{'足球','游泳','羽毛球','乒乓球','籃球','排球'},它表示學(xué)生A和B都喜歡的運(yùn)動項目。在Python中可以使用符號“|”或集合方法union()求出兩個集合的并集,示例代碼如下。1.并集并集與集合A和B之間的關(guān)系>>>A={'足球','游泳','羽毛球','乒乓球'}>>>B={'籃球','乒乓球','羽毛球','排球'}>>>print(A|B)#使用符號"|"獲取并集{'羽毛球','排球','乒乓球','足球','籃球','游泳'}>>>print(A.union(B))#使用集合方法union()獲取并集{'羽毛球','排球','乒乓球','足球','籃球','游泳'}同時屬于集合A和B的元素組成的集合稱為集合A和B的交集,交集與集合A和B之間的關(guān)系如下圖,其中陰影部分即交集。由交集的定義可知,學(xué)生A和B都喜歡的運(yùn)動項目的集合為{'羽毛球','乒乓球'}。可以使用符號“&”或集合方法intersection()求出兩個集合的交集,示例代碼如下。2.交集>>>print(A&B)#使用符號“&”獲取交集{'羽毛球','乒乓球'}>>>print(A.intersection(B))#使用集合方法intersection()獲取交集{'羽毛球','乒乓球'}交集與集合A和B之間的關(guān)系由屬于集合A但不屬于集合B中的元素所組成的集合稱為集合A和B的差集。差集與集合A和B之間的關(guān)系如下圖,其中陰影部分即差集A-B。除學(xué)生A、B都喜歡的運(yùn)動項目外,若需要知道學(xué)生A還喜歡哪些項目,可以通過求差集A-B來獲取。在Python中可以使用減號“-”或集合方法difference()求出兩個集合的差集,示例代碼如下。3.差集>>>print(A-B)#使用減號“-”獲取差集{'游泳','足球'}>>>print(A.difference(B))#使用集合方法difference()獲取差集{'游泳','足球'}差集與集合A和B之間的關(guān)系由屬于集合A或集合B但不同時屬于集合A和B的元素所組成的集合,稱為集合A和B的異或集,其相當(dāng)于。異或集與集合A和B之間的關(guān)系如下圖,其中陰影部分即異或集。通過求得例子中集合A和B的異或集,可以得知兩個學(xué)生喜歡的運(yùn)動項目哪些不相同。在Python中可以使用符號“^”或集合方法symmetric_difference()求出兩個集合的異或集,示例代碼如下。4.異或集>>>print(A^B)#使用符號“^”獲取異或集{'游泳','籃球','足球','排球'}>>>print(A.symmetric_difference(B)){'游泳','籃球','足球','排球'}異或集與集合A和B之間的關(guān)系集合之間的關(guān)系也是非常重要的。例如,現(xiàn)在知道學(xué)生C喜歡的運(yùn)動項目為{'足球','乒乓球','游泳'},要想大致知道學(xué)生A是否比學(xué)生C的體育愛好更廣泛,此時可以使用集合關(guān)系進(jìn)行判斷。在Python中判斷集合關(guān)系的常用方法和符號如下表。集合運(yùn)算方法和符號說

明<=或issubset()判斷一個集合是否為另一個集合的子集,即判斷是否有的關(guān)系。如果是,那么集合A中所有元素都是集合B中的元素<判斷一個集合是否為另一個集合的真子集,即判斷是否有AìB的關(guān)系。如果是,那么集合B中除了包含集合A中的所有元素,還包含集合A中沒有的其他元素>=或issuperset()判斷一個集合是否為另一個集合的超集,即判斷是否有AêB的關(guān)系。如果是,那么集合A包含集合B中的所有元素>判斷一個集合是否為另一個集合的真超集,即判斷是否有AéB的關(guān)系。如果是,那么集合A除了包含集合B中的所有元素,還包含集合B中沒有的其他元素>>>C={'足球','乒乓球','游泳'}>>>print(C<=A)#判斷子集True>>>print(C.issubset(A))#使用issubset()方法判斷子集True>>>print(C<A);print(A<A)#判斷真子集TrueFalse集合運(yùn)算判斷集合關(guān)系的方法和符號的應(yīng)用>>>print(A>=C)#判斷超集True>>>print(A.issuperset(C))#使用issuperset()方法判斷超集True>>>print(A>C);print(C>C)#判斷真超集TrueFalse集合運(yùn)算1集合運(yùn)算目錄創(chuàng)建集合2集合常用方法和函數(shù)3【任務(wù)3-4】實現(xiàn)學(xué)生選課信息查詢4集合類型數(shù)據(jù)結(jié)構(gòu)分為可變集合與不可變集合兩種。與其他可變數(shù)據(jù)型數(shù)據(jù)對象一樣,可變集合對象也可以進(jìn)行元素的增添、刪除、查詢等處理,相關(guān)常用方法和函數(shù)如下表所示。集合常用方法和函數(shù)方法和函數(shù)說

明add()方法向可變集合中增添一個元素update()方法向可變集合中增添其他集合的元素,即合并兩個集合pop()方法刪除可變集合中的一個元素,當(dāng)集合對象是空集時,返回錯誤remove()方法刪除可變集合中指定的一個元素clear()方法清空可變集合中的所有元素,返回空集len函數(shù)獲取集合中元素的個數(shù)copy()方法復(fù)制可變集合的內(nèi)容并創(chuàng)建一個副本對象>>>myset4={'red','green','blue','yellow'}>>>myset4_copy=myset4.copy()#創(chuàng)建一個集合副本對象>>>others={'black','white'}>>>#可變集合增添元素>>>myset4.add('orange')#使用add()方法增添元素>>>myset4.update(others)#使用update()方法合并兩個集合>>>print(myset4){'black','green','yellow','orange','white','blue','red'}集合常用方法和函數(shù)可變集合常用操作>>>#刪除可變集合元素>>>print(myset4.pop())#使用pop()方法從集合中刪除一個元素'black'>>>print(myset4)#查看刪除元素后的集合內(nèi)容{'green','yellow','orange','white','blue','red'}>>>myset4.remove('yellow')#使用remove()方法刪除指定元素>>>myset4_copy.clear()#使用clear()方法將副本對象內(nèi)容清空>>>print(myset4_copy)set()>>>print(len(myset4))#使用len函數(shù)獲取集合元素個數(shù)5集合常用方法和函數(shù)1集合運(yùn)算目錄創(chuàng)建集合2集合常用方法和函數(shù)3【任務(wù)3-4】實現(xiàn)學(xué)生選課信息查詢4任務(wù)描述為了準(zhǔn)確把握學(xué)生對C語言和Python這兩種流行計算機(jī)語言的學(xué)習(xí)興趣和選課偏好,某班級精心設(shè)計并創(chuàng)建了一份詳盡的學(xué)生選課信息表,為教學(xué)團(tuán)隊提供數(shù)據(jù)支持。Python張三李四王五趙六錢七李雷韓梅梅C語言趙六李四麥克張三韓梅梅李莉錢七任務(wù)分析(1)創(chuàng)建集合Python_Cou

溫馨提示

  • 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

提交評論