一、集合定義及其功能 集合是一個無序的、不重覆的數據組合,和字典列表一樣也是一種數據類型。 集合兩個最主要的功能:①去重(把一個列表變成集合,就自動去重了) ②關係測試(測試兩組數據之間的交、並、差集等關係) 二、關係測試 首先,如何創建集合? 兩種方式:(1)直接創建 (2)將列表轉化成集合 li ...
一、集合定義及其功能
集合是一個無序的、不重覆的數據組合,和字典列表一樣也是一種數據類型。
集合兩個最主要的功能:①去重(把一個列表變成集合,就自動去重了)
②關係測試(測試兩組數據之間的交、並、差集等關係)
二、關係測試
首先,如何創建集合?
兩種方式:(1)直接創建
a=set([1,8,2,3,5,4,5,3])
(2)將列表轉化成集合
list1=[5,9,7,3,6,6,7,95,78,65,102] #創建列表
list1=set(list1) #將列表轉化成集合
在這裡需要說明,集合是無序的,儘管將集合a輸出:print(a),得到的結果是
看上去好像自動做了排序,其實不然,只是集合的數據太少了,輸出list1就不是這樣了:
1.取兩個集合的交集:
兩種寫法:①intersection()方法
print(list1.intersection(a))
print(a.intersection(list1))
這兩種寫法沒有任何區別,輸出結果都是
②數學表示
print(list_1 & a)
2.取並集:
也是兩種方法:①union()方法
print("union:",a.union(list_1))
②數學表示
print("union:",a|list_1)
輸出結果:
3.取差集:
亦是兩種方法:①difference()方法
print("difference:",list_1.difference(a)) #差集(list_1減去交集)
print("difference:",a.difference(list_1)) #差集(a減去交集)
②數學表示
print("list_1 - a :",list_1-a)
print("a - list_1 :",a-list_1)
運行結果:
4.判斷是否是父集和子集的關係:
issubset()方法和issuperset()方法
print("issubset:",list_1.issubset(a)) #判斷list_1是不是a的子集
print("issuperset:",a.issuperset(list_1)) #判斷a是不是List_1的父集
當然,肯定都不是,再創建一個集合試一試
list_2=set([1,3,5])
print(list_2.issubset(a)) #判斷list_2是不是a的子集,是則返回True
print(a.issuperset(list_2)) #判斷a是不是list_2的父集,不是返回False
運行結果:
5.對稱差集:
對稱差集是指兩個集合的並集減去交集
①symmetric_difference()方法
print("symmetric_difference:",a.symmetric_difference(list_1))
②數學表示
print("a^list_1:",a^list_1)
運行結果:
6.判斷是不是相交
list_3=set([50,30,60])
print("isdisjoint:",a.isdisjoint(list_3)) #判斷兩個集合之間的關係是不是相交,如果相交返回False
print("isdisjoint:",a.isdisjoint(list_2))
運行結果:
三、集合的操作
1.添加數據
添加一項:
a.add("abc") #添加一項
添加多項:
a.update([20,30,90])
2.刪除數據
①remove()方法
a.remove("abc") #刪除字元“abc”
②pop()方法
print(a.pop()) #隨機刪除,並返回刪除的值
③discard()方法
a.discard(30) #刪除數據
3.獲取集合的長度
print(len(a)) #集合 a 的長度
4.判斷數據是否是集合的成員
print(30 in a) #判斷30是否是集合a的成員(列表、字典、集合、字元串都可以用這種方法來判斷)
print(30 not in a) #判斷30是否不是集合a的成員