--- type:slide --- ## Python Data Type ### Set 集合 #### https://colab.research.google.com/drive/1uRH8O6hCYvE2KEAg34shj3eAYqJ9BOFt?usp=sharing --- ### 還記得它們嗎? * ### List[ ] * ### Dict{'Key':'Value'} * ### Tuple() --- ### Set 集合具有以下特性: 1. 集合很像 Dict,只有『鍵』,沒有『值』的字典 ``` Dict {'小華':'0987388111','花花':'0987388222'} #我是字典 Set ('小華','花花','0987388111') #我是集合 ``` --- ### Set 集合具有以下特性: 2. 每個元素都是唯一,不會重複,不能更改。 ``` a = {1,1,,2,2,3,3} print(a) ``` #### 練習時間 --- ### Set 集合具有以下特性: 3. 集合本身可變動,我們可以增加或刪除集合中的項目。 4. 集合可用來執行數學集合的操作,如交集、聯集及差集等。 --- ### 新增Set 集合 #### 將「數字」or「布林」or「字串」組成一個集合 --- #### 使用 Set() 建立空集合 ``` 1. a = set() # 建立空集合 2. print(a) ``` #### 練習時間 --- #### 將 List 轉換成集合 ``` 1. b = set([1,2,3,4,5,4,3,2,1,1]) # 將List 轉為集合 2. print(b) ``` #### 練習時間 --- #### 將Dict 轉換成集合 ``` 1. c = set({'小華':'0987388111','小花':'0987388222'}) 2. print(c) 3. print('小花' in c) 4. print('小名' not in c) ``` #### 練習時間 --- #### Tuple 轉換成集合 ``` 1. d = set{'apple','banana','watermelon'} 2. print(d) 3. print('orange'in d) ``` #### 練習時間 --- #### 直接建立集合 Set{} #### set{布林,數值,字串} ``` a1 = {0,1,2,3,'apple',False} print(a1) ``` --- #### add() 加入項目 ``` a1 = {0,1,2,3,'apple','False'} a1.add(4) print(a1) ``` --- ### remove() 使用「集合.remove(項目)」,可以將指定的項目移除,不過如果該項目不存在,就會執行錯誤。 ``` a1 = {0,1,2,3,4,'apple','False'} a1.remove(4) print(a1) =================================================== a1 = {0,1,2,3,4,'apple','False'} a1.remove(5) print(a1) ``` #### 練習時間 --- ### discard() 如果不希望在移除項目時發生執行錯誤的狀況,可以使用「集合.discard(項目)」,將指定項目移除 ``` a1 = {0,1,2,3,4,'apple','False'} a1.discard(0) a1.discard(5) print(a1) ``` #### 練習時間 --- ### 集合可使用的函式 #### len() / sum() / max() / min() ``` a1 = {1,2,3,4,5,6,7,8} print(len(a1)) #回傳長度 print(sum(a1)) #回傳總和 print(max(a1)) #回傳最大值 print(min(a1)) #回傳最小值 ``` --- ## 集合運算 集合有四種運算型態,分別是「交集、聯集、差集、對稱差集」,透過下圖可以了解四種運算型態 ![image](https://hackmd.io/_uploads/r14YZm6eyg.png) --- #### 交集:取重複值 ![image](https://hackmd.io/_uploads/BJooH7pe1x.png) ``` a1={1,2,3,4,10} b1={4,5,6,7} print(a1&b1) ``` #### 練習時間 --- #### 差集:從a1中取與b1取不重複值 ![image](https://hackmd.io/_uploads/H1klUQae1g.png) ``` a1={1,2,3,4,10} b1={4,5,6,7} print(a1-b1) ``` #### 練習時間 --- #### 聯集:取全部資料且不重複 ![image](https://hackmd.io/_uploads/SkqzLXTg1g.png) ``` a1={1,2,3,4,10} b1={4,5,6,7} print(a1|b1) ``` #### 練習時間 --- #### 對稱差集:取不重複值(扣除重複) ![image](https://hackmd.io/_uploads/BywH8Qpeyx.png) ``` a1={1,2,3,4,10} b1={4,5,6,7} print(a1^b1) ``` #### 練習時間 --- ### 布林值 Boolean * #### True / False (是 / 否) * #### 每個條件代表著布林值 ( True/False ) * #### 一種資料型態,可以被指派到變數中 ``` x = True print(type(x)) print(x) ``` #### 練習時間 --- ### type()判斷資料型別 ``` x = 1.0 print(type(x)) x = 'Jessica' print(type(x)) x = 1 print(type(x)) ``` #### 練習時間 --- ### sorted()排序 * #### 利用內建函式排序資料 * #### 自行定義排序規則 * #### 官方文件上面的介紹: ``` sorted(串列名稱, reverse=False, key=rule_fn) ``` #### reverse 以及 key 都不是必要的參數,在不設定的情況底下都會有內建的預設值,而是當有需要使用到時再設定即可。 --- #### 練習時間:List 排序 ``` mylist = [11,6,3,9,2,1] print(mylist) mylist = sorted(mylist) print(mylist) ``` --- #### 練習時間: ``` mylist = [11,6,3,9,2,1] mylist = sorted(mylist, reverse=True) print(mylist) ``` --- #### 練習時間: ``` movieList = ["The Shape of Water", "Moonlight", "Superman", "Birdman", "Argo", "Spotlight"] print(movieList) moveList = sorted(moveList) print(moveList) ``` --- #### 練習時間:sorted(dic) ``` dic = {"2017": "The Shape of Water", "2016": "Moonlight", "2014": "Birdman", "2015": "Spotlight"} print(sorted(dic)) ``` --- #### 練習題1:建立與基礎操作 * 建立一個集合 numbers_set,包含數字 {1, 3, 5, 7, 9}。 * 將數字 11 加入集合中。 * 從集合中刪除數字 3。 * 檢查集合中是否存在數字 7 --- #### 練習題2:集合操作 - 交集與聯集 * 建立兩個集合 set_a 和 set_b,分別包含 {1, 2, 3, 4, 5} 和 {4, 5, 6, 7, 8}。 * 找出 set_a 和 set_b 的交集,並將結果存入 intersection_set 中。 * 找出 set_a 和 set_b 的聯集,並將結果存入 union_set 中。 * 分別印出 intersection_set 和 union_set。 --- ### 練習題3:集合操作 - 差集與對稱差集 * #### 建立兩個集合 set_x 和 set_y,分別包含 {10, 20, 30, 40} 和 {30, 40, 50, 60}。 * #### 找出 set_x 和 set_y 的差集,並將結果存入 difference_set 中。 * #### 找出 set_x 和 set_y 的對稱差集,並將結果存入 symmetric_difference_set 中。 * #### 分別印出 difference_set 和 symmetric_difference_set。 --- ### 練習題4:使用set型別操作 數學及格同學:Tom,John,Mary,Jimmy,Sunny,Amy 英文及格同學:John,Mary,Tony,Bob,Pony,Tom,Alice * #### 全班共有位同學? * #### 兩科都及格的同學是哪幾位? * #### 數學及格但英文不及格的是哪幾位? * #### 英文及格但數學不及格的是哪幾位? --- ---
{"title":"Python Data Type - Set 集合","contributors":"[{\"id\":\"d5c4533b-d74a-4511-a670-4ee035ec8672\",\"add\":5768,\"del\":1488}]","description":"集合很像 Dict,只有『鍵』,沒有『值』的字典"}
    139 views