《程序設計基礎(Python語言)》 課件 任務18:Python集合_第1頁
《程序設計基礎(Python語言)》 課件 任務18:Python集合_第2頁
《程序設計基礎(Python語言)》 課件 任務18:Python集合_第3頁
《程序設計基礎(Python語言)》 課件 任務18:Python集合_第4頁
《程序設計基礎(Python語言)》 課件 任務18:Python集合_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務18

Python集合程序設計基礎(Python語言)CONTENTS目錄01任務背景與目標02集合概述03集合創(chuàng)建與訪問04集合常用方法及操作05集合實例案例06任務測試與總結任務背景與目標01一、任務背景Python的集合(Set)是一種獨特而強大的數(shù)據(jù)結構,它以其簡潔、高效、靈活的特性,在眾多場景中發(fā)揮著不可或缺的作用。它源自數(shù)學,其數(shù)據(jù)處理更加符合人類的思維習慣。在日常生活中,我們經(jīng)常會遇到需要數(shù)據(jù)去重和查找的情形。例如檢查一組數(shù)據(jù)中是否唯一存在某個元素,這時集合的不重復特性體現(xiàn)其作用。本任務以小@的避障功能實現(xiàn)為依托,帶領同學們掌握集合的相關知識二、任務目標1.理解Python集合的基本概念、特點和適用場景2.熟練掌握集合的相關方法和操作3.掌握常見的并集、交集、差集等集合運算集合概述02一、集合概述Python中的集合類似數(shù)學中的集合,是一個存儲無序的、不重復的元素序列的容器,可包含0個或多個數(shù)據(jù)項,因此,集合屬于可變無序序列。集合使用一對大括號(“{”和“}”)作為定界符,元素間用逗號分隔,一個集合中的元素必須唯一的。二、集合特點及適用場景(一)特點

集合中的元素是可變的,即可以添加或刪除,但其類型必須是不可變類型,如可以是整數(shù)、浮點數(shù)、字符串、元組等,不能是列表、字典、集合等可變數(shù)據(jù)類型。集合的元素是無序的且必須唯一的,不允許重復元素存在。(二)適用場景

集合元素的不重復性可保證元素的唯一性,主要用于數(shù)據(jù)去重;集合的子集檢測、集合間的并集、交集、差集、對稱差集運算,可實現(xiàn)快速找出兩個集合之間的共同部分或不同部分可是做數(shù)據(jù)集合并、去重等。集合創(chuàng)建及訪問03一、集合創(chuàng)建與訪問集合使用一對大括號(“{”和“}”)括起來,創(chuàng)建方式主要有兩種。直接賦值創(chuàng)建是其中一種,可以直接使用“=”將一個非空集合賦值給變量,如代碼student={'240101','小@','人形機器人',462.5}print(type(student))print(student)輸出為<class'set’>{'240101','小@','人形機器人',462.5}一、集合創(chuàng)建與訪問請注意,創(chuàng)建空集合不能使用{},而應用set()函數(shù),因為{}表示空字典。使用set()函數(shù)也能創(chuàng)建集合,例如創(chuàng)建空集合時students={}print(type(students))students=set()print(type(students))輸出為<class'dict’><class'set'>一、集合創(chuàng)建與訪問使用set()函數(shù)將列表或其他可迭代對象轉換為集合能自動去除重復元素,如students=('240101','240102','240103','240101','240104','240105','小@','李@','小@','李@','小@’)print(students)student=set(students)print(student)輸出為('240101','240102','240103','240101','240104','240105','小@','李@','小@','李@','小@’){'小@','240101','240103','240104','240105','240102','李@’}

上例也驗證了集合的無序性,即集合沒有索引與位置,每次輸出的順序是隨機的,所以集合元素的訪問不能使用索引和位置訪問。集合常用方法及操作04一、集合常用方法及操作集合元素的添加有兩種常用方法,使用add()方法可添加單個元素,一次向集合中添加一個元素,如果該數(shù)據(jù)在集合中已存在則不再重復添加,例如students={'240101','240102','240103','240104','240105’}students.add('240106’)print(students)輸出為{'240102','240101','240105','240103','240106','240104’}一、集合常用方法及操作使用update()方法可添加多個元素,可以添加一個可迭代對象中的多個元素,例如添加列表、元組、集合中的元素,例如students={'240101','240102','240103','240104','240105’}student1=['240106’]student2=['240201','240202’]student3=['240301','240102','240301’]students.update(student1,student2,student3)print(students)輸出為{'240105','240106','240202','240103','240104','240101','240301','240201','240102’}

注意update方法的參數(shù)必須類型相同,如本例中均為列表類型,否則需進行類型轉換再進行添加,且添加時會自動去重一、集合常用方法及操作集合元素的刪除有三種常用方法,使用remove()方法刪除元素時,若指定元素在集合存在則刪除,若不存在則引發(fā)錯誤,例如students={'240101','240102','240103','240104','240105','240106’}students.remove('240105’)print(students)students.remove('240105’)print(students)輸出為{'240103','240101','240106','240102','240104’}KeyError:'240105’一、集合常用方法及操作第二次刪除時因元素不存在引發(fā)錯誤;使用discard()方法刪除元素時,若指定元素在集合存在則刪除,若不存在則不會引發(fā)錯誤,例如student4={'240101','240102','240103','240104','240105','240106’}student4.discard('240105’)print(student4)student4.discard('240105’)print(student4)輸出均為{'240102','240101','240103','240104','240106’}

第二次刪除時因元素不存在也不會引發(fā)錯誤;使用pop()方法可隨機刪除元素,會隨機刪除并返回集合中的一個元素,當集合為空時會引發(fā)錯誤,例如對上例中的student4操作student4.pop()print(student4)輸出為{'240101','240103','240102','240106'}一、集合常用方法及操作Python中集合的交集(intersection()方法或&)、并集(union()方法或|)、差集(difference()方法或-)、補集(symmetric_difference()方法或^)等運算法則同數(shù)學中的集合運算。集合的其他操作包括:使用in/notin關鍵字判斷指定元素是否在集合中,如s=set(range(1,20,2))print(3notins)輸出False使用len()函數(shù)獲取集合的元素個數(shù),如s=set(range(1,20,2))print(len(s))輸出整數(shù)10;一、集合常用方法及操作集合元素的比較中,使用S.isdisjoint(T)函數(shù)比較兩個集合S和T是否有相同元素,如果有,返回True,否則返回False,如s1=set(range(1,20,2))s2=set(range(1,20,3))print(s1.isdisjoint(s2))輸出False

使用關系運算符<、>比較兩個集合的包含關系,如s1=set(range(1,20,2))s2=set(range(1,20,3))print(s1<=s2)print(s1>=s2)

兩次輸出均為False。前面所講內(nèi)容包含了集合的創(chuàng)建、元素的添加和刪除、集合間的操作,強調(diào)了集合的可變性、無序性、元素唯一性等特點,以及在數(shù)據(jù)去重、集合運算等場景中的應用。集合實例案列05【案例18-1】使用集合存儲相關物品以及類型一、案例描述創(chuàng)建集合存儲小@巡航時可能遇見的障礙物類型,如{'box','chair','person'},保證所存障礙物類型的唯一性,支持快速判斷所遇障礙物是否為新類型,保障小@的巡航避障,也展示了在智能倉儲和服務機器人等應用中的價值。二、案例步驟詳解1.初始化信息使用集合初始障礙物信息2.判斷元素判斷是否遇到新的障礙物類型是否在集合中3.增加元素添加新的障礙物類型于集合三、代碼示例及顯示結果#初始化障礙物類型集合detected_obstacles={'box','chair','person'}#判斷是否遇到新的障礙物類型defis_new_obstacle(obstacle_type):returnobstacle_typenotindetected_obstacles#添加新的障礙物類型defadd_obstacle(obstacle_type):detected_obstacles.add(obstacle_type)print(f"新的障礙物類型{obstacle_type}已添加")#示例obstacle_type="table"ifis_new_obstacle(obstacle_type):print(f"遇到新的障礙物類型:{obstacle_type}")add_obstacle(obstacle_type)else:print(f"障礙物類型{obstacle_type}已經(jīng)存在")三、代碼示例及顯示結果#再次檢查obstacle_type="chair"ifis_new_obstacle(obstacle_type):print(f"遇到新的障礙物類型:{obstacle_type}")add_obstacle(obstacle_type)else:print(f"障礙物類型{obstacle_type}已經(jīng)存在")#打印當前檢測到的障礙物類型print("當前檢測到的障礙物類型:",detected_obstacles)案例輸出:【案例18-2】使用集合進行數(shù)據(jù)的分析一、案例描述使用集合的交集、并集和差集操作來處理不同區(qū)域的任務和資源分配,可實現(xiàn)小@的任務規(guī)劃。例如,計算兩個任務區(qū)域的交集,可確定重復執(zhí)行的任務;計算其并集可匯總所有要做的任務;計算差集可找出某個區(qū)域獨有的任務。運用集合運算可合理安排小@的工作流程,提高任務執(zhí)行的效率和資源利用率,為“數(shù)字中國”的智能運營和管理提供有效的解決方案。二、案例步驟詳解1.初始化集合初始化任務區(qū)域集合2.操作集合計算交集、并集、差集三、代碼示例及顯示結果#初始化任務區(qū)域1的任務集合tasks_area1={'任務1','任務2','任務3','任務4'}#初始化任務區(qū)域2的任務集合tasks_area2={'任務3','任務4','任務5','任務6'}#計算兩個任務區(qū)域的交集,確定需要共同處理的任務defget_common_tasks(tasks1,tasks2):returntasks1&tasks2#計算兩個任務區(qū)域的并集,匯總所有可能的任務defget_all_tasks(tasks1,tasks2):returntasks1|tasks2三、代碼示例及顯示結果#計算兩個任務區(qū)域的差集,找出某個區(qū)域獨有的任務defget_unique_tasks(tasks1,tasks2):unique_to_area1=tasks1-tasks2unique_to_area2=tasks2-tasks1returnunique_to_area1,unique_to_area2#示例common_tasks=get_common_tasks(tasks_area1,tasks_area2)print("需要共同處理的任務:",common_tasks)all_tasks=get_all_tasks(tasks_area1,tasks_area2)print("所有可能的任務:",all_tasks)unique_to_area1,unique_to_area2=get_unique_tasks(tasks_area1,tasks_area2)print("任務區(qū)域1獨有的任務:",unique_to_area1)print("任務區(qū)域2獨有的任務:",unique_to_area2)案例輸出:任務測試與總結06一、選擇題1.集合(Set)在Python中是一種什么類型的數(shù)據(jù)結構?()A.有序集合 B.無序集合,不包含重復元素C.字典的另一種形式 D.列表的另一種形式2.集合中的元素必須是?()A.不可變類型

B.可變類型C.既可以是可變類型也可以是不可變類型

D.必須是數(shù)字3.以下哪個操作是集合特有的,列表和元組都不具備?()A.索引訪問 B.切片 C.集合推導式 D.集合的并集操作4.如何創(chuàng)建一個空集合?()A.set() B.{} C.set(()) D.list()5.如何向集合中添加元素?()A.使用append()方法 B.使用add()方法C.直接賦值 D.使用extend()方法一、選擇題6.要檢查元素4是否在集合s={1,2,3,4}中,應使用什么語法?()A.s.contains(4) B.s.includes(4) C.4ins D.s(4)7.集合{1,2,3}和{2,3,4}的交集是?()A.{1,2,3,4} B.{2,3} C.{1,4} D.{}8.集合a={1,2,3}和b={2,3,4}的對稱差集是?()A.{1,2,3,4} B.{2,3} C.{1,4} D.{}9.若想獲得兩個集合中不重復的元素,可以使用()A.symmetric_difference() B.union()C.issubset() D.intersection()10.以下哪個表達式的結果不是集合?()A.set((1,2,3)) B.{xforxinrange(3)}C.{1,2}+(3,4) D.frozenset({1,2,3})一、選擇題11.如何刪除集合中的元素?()A.使用del關鍵字 B.使用remove()方法C.使用pop()方法 D.A和B都可以12.假設有集合a={1,2,3}和b={3,4,5},執(zhí)行a.update(b)后,

溫馨提示

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

最新文檔

評論

0/150

提交評論