定義
由不重複且不可變對象組成的無序且有限的集合。因此它們不能通過下標來索引。但是它們可被迭代,也可用內置函數 len() 返回集合中的條目數。集合常見的用處是快速成員檢測,去除序列中的重複項,以及進行交、並、差和對稱差等數學運算。
對於集合元素所採用的不可變規則與字典的鍵相同。注意數字類型遵循正常的數字比較規則: 如果兩個數字相等 (例如 1 和 1.0),則同一集合中只能包含其中一個。
總結幾點特徵:
- 集合是無序的
- 集合是可變的
- 集合內元素是確定的(不可變的)
- 集合內元素是唯一的(不重複的)
基本操作
創建集合
使用{},注意:創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典
使用set()函數
根據定義,集合內元素是唯一的、不重複的,所以可以自動去重
集合間運算
添加元素
add(x)方法,添加元素。無返回值。如果元素已存在,則不進行任何操作,因爲集合元素是不重複的
update(x)方法,可理解爲是批量添加。無返回值。參數是單個元素或者集合,依然遵循元素不重複的原則
移除元素
remove(x)方法,移除x元素,返回被移除的x元素。有返回值。當要移除的元素x不存在時,會報錯。
discard(x)方法,移除x元素,作用同remove方法,但無返回值。區別是當要移除元素x不存在時,不會報錯。
清空集合
clear()方法,清空集合內所有元素。無返回值。
方法
copy()
拷貝集合並返回拷貝的集合。有返回值。
關於淺拷貝,參考上節字典的copy()方法中所提
difference(set)
返回集合的差集,有返回值。例如a.difference(b),返回的是去除相同元素的新集合
difference_update(set)
移除兩個集合中都存在的元素,無返回值。例如a.difference_update(b),即在a中移除兩個集合中都存在的元素,與difference不同的是,該方法直接修改a
intersection(set1,set2,....)
用於返回兩個或更多集合中都包含的元素,即交集。有返回值。
intersection_update()
用於獲取兩個或更多集合中都重疊的元素,即計算交集。無返回值。
不同於 intersection() 方法,因爲 intersection() 方法是返回一個新的集合,而 intersection_update() 方法是在原始的集合上移除不重疊的元素。
isdisjoint()
用於判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。
如圖,判斷y中是否包含x的元素
issubset()
用於判斷集合的所有元素是否都包含在指定集合中,如果是則返回 True,否則返回 False。
如圖,判斷y中是否包含x
issuperset()
用於判斷指定集合的所有元素是否都包含在原始的集合中,如果是則返回 True,否則返回 False。
如圖,判斷x中是否包含y
和issubset()好像差不多,只是包含關係不一樣
symmetric_difference()
返回兩個集合中不重複的元素集合,即會移除兩個集合中都存在的元素。有返回值
symmetric_difference_update()
移除當前集合中在另外一個指定集合相同的元素,並將另外一個指定集合中不同的元素插入到當前集合中。無返回值。
union()
返回兩個集合的並集,即包含了所有集合的元素,重複的元素只會出現一次。有返回值