1.什么是集合
1.集合是一個可變容器
2.集合內的數據對象都是唯一的(不能重復)
3.集合是無序的存儲結構,集合內的數據沒有先后關系
4.集合是可迭代對象
5.集合相當於是只有鍵沒有值得字典(鍵就是集合中的數據)
6.集合內的元素是不可變的
2.創建集合
1.使用直接量創建集合
注意:使用直接量不能創建空集合
s = {1,2,3}
s = {"hello",3.14,True,(2019,02,17)}
2.使用構造函數創建集合 - set
s = set() #創建空集合
s = set(iterable) #使用可迭代對象創建一個集合
s = set("ABC") # s = {'A','B','C'}
s = set([1,0,3.14,"hello"]) # s = {1,0,3.14,'hello'}
... ...
3.集合的運算
交集,並集,補集,子集,超集
1.交集 - &
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 & s2 # s3 = {2,3}
2.並集 - |
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 | s2 #s3 = {1,2,3,4}
3.補集 - -
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 - s2 #生成屬於s1 但 不屬於s2的所有的元素
#s3 = {1}
4.對稱補集 - ^
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 ^ s2 # (s1 - s2) | (s2 - s1)
5.超集 - >
6.子集 - <
s1 = {1,2,3}
s2 = {2,3}
s1 > s2 # True s1 是 s2 的超集
s1 < s2 # False s1 不是 s2 的子集
7.集合的相等 - ==
8.集合的不等 - !=
s1 = {1,2,3}
s2 = {3,2,1}
s1 == s2 #True,集合相等
9.成員運算 - in , not in
等同於字典 in , not in
目的:判斷某個值在集合中存在 / 不存在
4.用於集合的內建函數
len(set) : 集合內元素的個數
max(set) : 最大值
min(set) : 最小值
sum(set) : 和
any(set) : 任何一個元素為真,則返回真
all(set) : 所有元素為真,則返回真
5.用於集合的方法
1.add()

作用:
向集合內增加元素,如果添加的元素已經存在的話,則不執行任何操作
語法:
集合對象.add(elem)
參數:elem 表示要增加的元素
返回值:無
2.clear()

作用:
清空集合內所有的元素
語法:
集合對象.clear()
參數:無
返回值:無
3.copy()

作用:
復制一個集合
語法:
集合對象.copy()
參數: 無
返回值:返回已復制的集合對象
4.difference()

作用:
返回兩個集合的補集
語法:
集合對象1.difference(集合對象2)
參數 :集合對象2 ,表示計算補集的另外一個集合
返回值 :補集結果,即出現在集合1中但沒出現在集合2中的元素集合
等同於: 集合對象1 - 集合對象2
5.difference_update()

作用:
移除兩個集合中都存在的元素
語法:
集合對象1.difference_update(集合對象2)
參數 集合對象2 :計算補集的集合
返回值:無
注意:直接從集合對象1中刪除交集
6.remove()

作用:
移除指定的元素
語法:
集合對象.remove(移除元素)
參數 移除元素:要移除的內容
返回值 :無
注意:如果要移除的元素不存在,則發生錯誤
7.discard()

作用:
移除指定的元素
語法:
同上
注意:如果要刪除不存在的元素,不會發生錯誤
8.pop()

作用:
用於隨機刪除一個元素
語法:
集合對象.pop()
9.intersection()

作用:
返回兩個或多個集合中的交集元素
語法:
set1.intersection(set2,set3,set4)
參數:
做交集的集合對象,可以是多個
返回:
返回交集的集合結果
10.intersection_update

作用:
獲取多個集合的交集,但會將結果直接影響回調用該方法的集合對象
語法:
s1.intersection_update(s2)
參數:做交集的集合
返回值:無,但會影響s1的結果
11.isdisjoint()

作用:
判斷兩個集合中是否包含相同的元素,如果沒有返回True,否則返回False
語法:
s1.isdisjoint(s2)
12.issubset()

作用:
判斷一個集合的元素是否都包含在指定集合中(判斷子集),如果是返回True,否則返回False
語法:
s1.issubset(s2)
13.issuperset()

作用:
判斷超集
語法:
s1.issuperset(s2)
返回值:
如果s1 包含 s2 ,則返回True
如果s1 不包含 s2 ,則返回False(如果s2中有的元素沒在s1中)
14.symmetric_difference()

作用:
對稱補集,即返回兩個集合中不重復的元素集合
語法:
s1.symmetric_difference(s2)
參數:計算對稱補集的集合
返回值:返回一個不重復的元素的集合
等同於 s1 ^ s2
15.symmetric_difference_update()

作用:
對稱補集,將結果直接影響回原始集合
語法:
s1.symmetric_difference_update(s2)
16.union()

作用:
返回兩個集合的並集即返回兩個集合中所有的元素,重復元素只出現一次
語法:
s1.union(s2)
返回值:並集結果
等同於:s1 | s2
17.update()

作用:
修改當前集合,也可以添加新元素到集合中
語法:
s1.update(s2)
參數:用於更新s1集合的新集合
返回值:會將更新的結果進行返回
6.集合推導式
集合推導式即允許使用可迭代對象生成集合的表達式
語法:
{ 表達式 for 變量 in 可迭代對象 if 條件}
L = [1,2,3,4,5,6,7,8,9]
s = { x for x in L}
s = { x for x in L if x % 2 == 0}
7.固定集合 - frozenset
1.特點
1.不可變的容器 - 允許作為字典的鍵
2.無序的
3.元素唯一
2.創建固定集合 - 使用構造函數(frozenset)
1.frozenset() : 創建一個空的固定集合
2.frozenset(iterable) : 使用可迭代對象創建固定集合
示例:
f = frozenset() # 空固定集合
f = frozenset([1,2,3,4]) # f = frozenset({1,2,3,4})
3.固定集合的運算
交集(&),並集(|),補集(-),對稱補集(^)
<,>,>=,<=,==,!=
int / not in
4.固定集合的方法
相當於集合的全部方法去掉能夠修改集合的方法