集合· Introducing python - iampennywu

文章推薦指數: 80 %
投票人數:10人

集合(set) :目錄 · 交集【使用& 或intersection()】 · 將「集合」存在「變數」內,節省打字次數 · 聯集【使用| 或union()】 · 差集【使用- 或difference()】. Introducingpython Introduction Chapter1初嘗Py Chapter2Py食材:數字、字串與變數 變數、名稱與物件 數字 字串 內建字串函式 Chapter3Py填充:串列、Tuple、字典及集合 串列 串列函式 Tuple 字典 字典函式 集合 資料結構 Chapter4Py之殼:程式結構 if、elif、else 生成式 函式引數 函式 產生器 裝飾器 命名空間與範圍 使用try與except來處理錯誤 製作你自己的例外 Chapter5Py盒子:模組、套件與程式 模組與import陳述式 套件 Python標準程式庫 Chapter6Py喔喔:物件與類別 用class來定義類別 繼承 覆寫方法 添加方法 用super來讓父系幫助你 self防衛 使用特性來取得屬性值與設定它 搞砸私用名稱 方法類型 DuckTyping 特殊方法 組合 使用類別與物件V.S.模組的時機 PoweredbyGitBook 集合 集合(set):目錄 集合(set)介紹 集合v.s.字典 使用集合的時機 集合理論 建立集合【使用set()】 建立集合 空集合 轉換其他類型【使用set()】 字串→集合(丟棄任何重複的字元) 串列→集合 Tuple→集合 字典→集合 使用in來測試值 集合【字典={鍵:{集合=一系列的值}}】 集合v.s.字典 由「集合」尋找「鍵」【使用for,in,items(),if,print()】 由「集合」尋找「鍵」,但有排除條件 結合與運算子 交集【使用&或intersection()】 將「集合」存在「變數」內,節省打字次數 聯集【使用|或union()】 差集【使用-或difference()】 以上,是最常見的集合運算子 互斥【使用^或symmetric_difference()】 子集合【使用<=或issubset()】 真子集(propersubset)【使用=或issuperset()】 真超集合【使用>】 集合(set)介紹 集合v.s.字典 集合,就像是被移除值,只留下鍵的字典 跟字典一樣,每一個鍵都必須是獨一無二 跟字典的鍵一樣,集合是無序的 使用集合的時機 使用集合的時機:只想要知道某個東西是否存在,其他都無所謂 使用字典的時機:想要將某些資訊指派給鍵來作為它的值 集合理論 聯集 交集 null或空集合:是指含有零個元素的集合 建立集合【使用set()】 建立集合 建立集合,可以使用set()函式,或是將一或多個以逗號分隔的值包在大括號裡面 集合名稱={值1,值2,值3,值4,值5} 集合名稱 {值1,值2,值3,值4,值5} >>>even_numbers={0,2,4,6,8} >>>even_numbers {0,2,4,6,8} >>>odd_numbers={1,3,5,7,9} >>>odd_numbers {1,3,5,7,9} 空集合 空串列:[] 空字典:{}→在Python中,字典可優先取用大括號 空集合:set() 集合名稱=set() 集合名稱 set() >>>empty_set=set() >>>empty_set set() 轉換其他類型【使用set()】 可能會用串列、字串、tuple或字典來建立集合,並丟棄任何重複的值 字串→集合(丟棄任何重複的字元) set('字元1字元2字元3字元1') {'字元1','字元2','字元3'} >>>set('letters') {'s','r','e','l','t'} 串列→集合 set([字串1,字串2,字串3,字串4]) {字串1,字串2,字串3,字串4} >>>set(['Dasher','Dancer','Prancer','Mason-Dixon']) {'Dasher','Mason-Dixon','Dancer','Prancer'} Tuple→集合 set((字串1,字串2,字串3,字串4)) {字串1,字串2,字串3,字串4} >>>set(('Ummagumma','Echoes','AtomHeartMother')) {'AtomHeartMother','Echoes','Ummagumma'} 字典→集合 set({鍵1:值1,鍵2:值2,鍵3:值3}) {鍵1,鍵2,鍵3} >>>set({'apple':'red','orange':'orange','cherry':'red'}) {'apple','cherry','orange'} 使用in來測試值 集合【字典={鍵:{集合=一系列的值}}】 這是集合最常用到的。

建立一個「字典」,其中每個「鍵」都是一種名稱,它對應的「值」是它的材料「集合」。

字典={ 鍵1(名稱1):{值1,值2}, 鍵2(名稱2):{值1,值3}, 鍵3(名稱3):{值1,值3,值4} 鍵4(名稱4):{值2,值5,值6} 鍵5(名稱5):{值1,值7} } >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } 值1:vodka 值2:vermouth 值3:kahlua 值4:cream 值5:rye 值6:bitters 值7:orangejuice 集合v.s.字典 集合:集合名稱={值1,值2,值3,值4}→一系列的值 字典:字典名稱={鍵1:值1,鍵2:值2,鍵3:值3}→一或多個「鍵:值」對 由「集合」尋找「鍵」【使用for,in,items(),if,print()】 forname,contentsin字典名稱.items(): if'值1'incontents: print(name) >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>forname,contentsindrinks.items(): if'vodka'incontents: print(name) martini blackrussian whiterussian screwdriver 由「集合」尋找「鍵」,但有排除條件 【方法一】使用for,in,items(),if,print(),not >>>forname,contentsin字典名稱.items(): if'值1'incontentsandnot('值2'incontentsor'值4'incontents): print(name) >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>forname,contentsindrinks.items(): if'vodka'incontentsandnot('vermouth'incontentsor'cream'incontents): print(name) blackrussian screwdriver 【方法二】使用&,for,in,items(),if,print(),not >>>forname,contentsin字典名稱.items(): if'值1'incontentsandnotcontents&{'值2','值4'}: print(name) >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>forname,contentsindrinks.items(): if'vodka'incontentsandnotcontents&{'vermouth','cream'}: print(name) blackrussian screwdriver 結合與運算子 運算子,有一些會使用特殊的標點符號,有一些會使用特殊函數,有些同時使用兩者。

交集【使用&或intersection()】 &運算子會產生一個集合,裡面存有你所比較的兩個串列內都有的項目。

如果contents裡面沒有任何那些材料,&會回傳一個空集合,它會被視為False 方法一:【使用&】 &符號來取得交集(兩組集合共有的項目) 值1:vodka 值2:vermouth 值3:kahlua 值4:cream 值5:rye 值6:bitters 值7:orangejuice 字典={ 鍵1(名稱1):{值1,值2}, 鍵2(名稱2):{值1,值3}, 鍵3(名稱3):{值1,值3,值4} 鍵4(名稱4):{值2,值5,值6} 鍵5(名稱5):{值1,值7} } forname,contentsin字典名稱.items(): ifcontents&{'值2','值7'}: print(name) >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>forname,contentsindrinks.items(): ifcontents&{'vermouth','orangejuice'}: print(name) martini manhattan screwdriver 變數1=字典名稱1['鍵1'] 變數2=字典名稱2['鍵2'] 變數1&變數2 {'值1','值3'} >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss&wruss {'vodka','kahlua'} 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1&集合名稱2 值2 >>>a={1,2} >>>b={2,3} >>>a&b {2} 方法二:【使用intersection()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.intersection(集合名稱2) 值2 >>>a={1,2} >>>b={2,3} >>>a.intersection(b) {2} 將「集合」存在「變數」內,節省打字次數 字典={ 鍵1(名稱1):{值1,值2}, 鍵2(名稱2):{值1,值3}, 鍵3(名稱3):{值1,值3,值4} 鍵4(名稱4):{值2,值5,值6} 鍵5(名稱5):{值1,值7} } >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } 值1:vodka 值2:vermouth 值3:kahlua 值4:cream 值5:rye 值6:bitters 值7:orangejuice 將兩種的材料「集合」存在「變數」內,節省之後範例的打字次數 變數1=字典['鍵1'] 變數2=字典['鍵2'] >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] 聯集【使用|或union()】 方法一:【使用|】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1|集合名稱2 {值1,值2,值3} >>>a={1,2} >>>b={2,3} >>>a|b {1,2,3} >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss|wruss {'vodka','cream','kahlua'} 方法二:【使用union()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.union(集合名稱2) {值1,值2,值3} >>>a={1,2} >>>b={2,3} >>>a.union(b) {1,2,3} 差集【使用-或difference()】 取得方式:屬於第一個集合,但不屬於第二個集合的成員 方法一:【使用-】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1-集合名稱2 {值1} >>>a={1,2} >>>b={2,3} >>>a-b {1} >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss-wruss set() >>>wruss-bruss {'cream'} >>> 方法二:【使用difference()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.difference(集合名稱2) {值1} >>>a={1,2} >>>b={2,3} >>>a.difference(b) {1} 以上,是最常見的集合運算子 到目前為止,最常見的集合運算子是「聯集」、「交集」、「差集」。

為了完整起見,接下來會討論其他的集合運算子,但可能永遠都不會用到它們 互斥【使用^或symmetric_difference()】 互斥或只屬於其中一個集合的項目 方法一:【使用^】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1^集合名稱2 {值1,值3} >>>a={1,2} >>>b={2,3} >>>a^b {1,3} >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss^wruss {'cream'} 方法二:【使用symmetric_difference()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.symmetric_difference(集合名稱2) {值1,值3} >>>a={1,2} >>>b={2,3} >>>a.symmetric_difference(b) {1,3} 子集合【使用<=或issubset()】 可以用<=或issubset()來檢查「某個集合」是否為「另一個集合」的子集合(第一個集合的「所有成員」都屬於第二個集合) 方法一:【使用<=】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1<=集合名稱2 False >>>a={1,2} >>>b={2,3} >>>a<=b False >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss<=wruss True 方法二:【使用issubset()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.issubset(集合名稱2) False >>>a={1,2} >>>b={2,3} >>>a.issubset(b) False 方法三:子集合—「所有的集合」都是「它自己」的子集合 集合名稱1={值1,值2} 集合名稱1<=集合名稱1 集合名稱1.issubset(集合名稱1) True >>>a={1,2} >>>b={2,3} >>>a<=a True >>>a.issubset(a) True 真子集(propersubset)【使用>>a={1,2} >>>b={2,3} >>>a>>a>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>bruss=或issuperset()】 超集合(superset)是子集合的相反 「第二個集合」的所有成員都是「第一個集合」的成員 方法一:【使用>=】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1>=集合名稱2 False >>>a={1,2} >>>b={2,3} >>>a>=b False >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>wruss>=bruss True 方法二:【使用issuperset()】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1.issuperset(集合名稱2) False >>>a={1,2} >>>b={2,3} >>>a.issuperset(b) False 方法三:超集合—「所有的集合」都是「它自己」的超集合 集合名稱1={值1,值2} 集合名稱1={值1,值2} 集合名稱1>=集合名稱1 集合名稱1.issuperset(集合名稱1) True >>>a={1,2} >>>b={2,3} >>>a>=a True >>>a.issuperset(a) True 真超集合【使用>】 集合名稱1={值1,值2} 集合名稱2={值3,值2} 集合名稱1>集合名稱2 False >>>a={1,2} >>>b={2,3} >>>a>b False >>>drinks={ 'martini':{'vodka','vermouth'}, 'blackrussian':{'vodka','kahlua'}, 'whiterussian':{'vodka','kahlua','cream'}, 'manhattan':{'vermouth','rye','bitters'}, 'screwdriver':{'vodka','orangejuice'} } >>>bruss=drinks['blackrussian'] >>>wruss=drinks['whiterussian'] >>>wruss>bruss True 集合無法成為自己的真超集合 集合名稱1={值1,值2} 集合名稱1>集合名稱1 False >>>a={1,2} >>>b={2,3} >>>a>a False resultsmatching"" Noresultsmatching""



請為這篇文章評分?