Python除了List、Tuple、Dict等經常使用數據類型外,還有一種數據類型叫作集合(set),集合的最大特色是:集合裏邊的元素是不可重複的而且集合內的元素仍是無序的,因此通常狀況下集合經常使用的兩個場景是:1.去重(如:列表去重);2.關係測試(如:取交集、取並集、取差集等)python
1)集合包含一組無序的對象,可使用set()函數來像下邊的方式同樣來建立集合ide
#!/usr/bin/env python # -*-coding:UTF-8 -*- #建立一個數值集合 set1 = set([1,2,3,4]) #建立一個字符集合 注意:從輸出結果中咱們會看到l只出現了一次 set2 = set("HelloWorld!") print('set1 %s' % set1) print('set2 %s' % set2) '''運行結果 set1 {1, 2, 3, 4} set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'} '''
2)去重,便可能在一些特殊的場景須要用到,實現去除掉列表中的重複元素函數
#!/usr/bin/env python # -*-coding:UTF-8 -*- #列表去重比較簡單 list1 = [3,3,3,4,5,3] set1 = set(list1) print("list1去重後的set集合:",set1) #將如中後的集合在轉化成一個新列表 new_list = [i for i in set1] print("list1去重後的list列表:",new_list) '''運行結果 list1去重後的set集合: {3, 4, 5} list1去重後的list列表: [3, 4, 5] '''
3)關係測試,即一些集合的最基本操做,如集合取交集、取並集、取差集、判斷一個集合是否是另外一個集合的子集或者父集等。測試
#!/usr/bin/env python # -*-coding:UTF-8 -*- set1 = set([1,2,3,4,5]) set2 = set([3,4,5,6,7]) #取交集 set3 = set1.intersection(set2) # set3 = set1 & ste2 #取交集,與intersection()效果相同 print("set1和set2的交集爲:",set3) #取並集 set4 = set1.union(set2) #set4 = set1 | set2 #取並集,與union()效果相同 print("set1和set2的交集爲:",set4) #取差集 這個地方要稍稍注意一下,防止進坑 set5 = set1.difference(set2) #set5 = set1 - set2 #取差集 ,與difference()效果相同 print("set1與set2的差集爲:",set5) set6 = set2.difference(set1) print("set2與set1的差集爲:",set6) #對稱差集 -----即去掉兩個集合的共同的部分 set7 = set1.symmetric_difference(set2) #set7 = set1 ^ set2 #對稱差集, 與symmetric_difference()效果相同 print("去掉兩個集合的共同的部分:",set7) #判斷是不是set1是不是set2的子集 flag1 = set1.issubset(set2) print("print(判斷是不是set1是不是set2的子集):",flag1) #判斷是不是set1是不是set2的父集 flag2 = set1.issuperset(set2) print("判斷是不是set1是不是set2的父集:",flag2) '''運行結果以下: set1和set2的交集爲: {3, 4, 5} set1和set2的交集爲: {1, 2, 3, 4, 5, 6, 7} set1與set2的差集爲: {1, 2} set2與set1的差集爲: {6, 7} 去掉兩個集合的共同的部分: {1, 2, 6, 7} print(判斷是不是set1是不是set2的子集): False 判斷是不是set1是不是set2的父集: False '''
4)集合的一些其它基本操做對象
#!/usr/bin/env python # -*-coding:UTF-8 -*- #輸出集合中的元素 #注意集合與列表和元組不一樣,集合是無序的,因此沒法經過數字進行索引獲取某一個元素的值 set1 = set([1,2,3,4]) for i in set1: print (i) #向集合中添加一個元素 set1.add(5) print("向集合中添加一個元素5後:",set1) #刪除一個元素 set1.remove(1) print("從集合中刪除元素1後:",set1) #計算集合的長度 l = len(set1) print("集合的長度爲:",l) #判斷某個元素是否在集合內 flag1 = 2 in set1 print("判斷元素2是否在集合內:",flag1) #斷某個元素是否不在集合內 flag2 = 3 not in set1 print("判斷元素3是否不在集合內:",flag2) #對集合進行一次淺複製 set2 = set1.copy() print("對集合進行一次淺複製:",set2) '''運行結果以下: 1 2 3 4 向集合中添加一個元素5後: {1, 2, 3, 4, 5} 從集合中刪除元素1後: {2, 3, 4, 5} 集合的長度爲: 4 判斷元素2是否在集合內: True 判斷元素3是否不在集合內: False 對集合進行一次淺複製: {2, 3, 4, 5} '''
以上是集合(set)的一些比較經常使用操做的示例,對於集合的一些其它操做,這裏就不在一一舉例說明了。索引