本篇介紹Python集合數據類型。集合不同於列表和元組類型,集合存儲的元素是無序且不能重複的,同數學中的集合一樣,集合可以執行集合的並、交、差運算。通過本篇的學習,可以達成如下目標。
● 掌握集合數據類型
● 在程序中使用集合數據類型
在數學概念中,集合是由一個或多個確定的元素構成的整體。具體來說是指具有某種特定性質、具體的或抽象的對象匯總成的集體,這些對象稱為該集合的元素或成員。例如,在整數集合中,數值…、-1、0、1、2…是整數集合的元素。
在Python語言中,集合存儲的元素無序且不能重複,因此可以做字典的鍵。集合有兩種不同的類型,可變集合和不可變集合,可變集合可以添加或刪除元素,但可變集合所存儲的元素不能被哈希,因此不能用做字典的鍵;不可變集合不能添加或刪除元素,但元素是可哈希的,可以做字典的鍵。
1、 集合的聲明和賦值
集合必須用Python提供的工廠函數來聲明,可變集合使用set函數,不可變集合使用frozenset函數。
例1:集合聲明和賦值
從上面的輸出結果可以看出,集合會把傳入的字符串拆分為單個字符作為集合的成員,當傳入列表時,集合會把列表內的元素作為集合成員。從輸出結果還可以看出,集合不允許有重複的元素,例中s1聲明時傳入了「Java」字符串,但集合成員只有{『j』,』a』,』v』},重複的a被刪除。
2、 集合的訪問
集合存儲的元素是無序且不重複的,因此不能像列表、元組一樣通過索引訪問集合存儲的元素。對集合元素的訪問可以使用成員操作符in或not in來判斷某元素是否在集合中。
例2:用成員操作符訪問集合元素
可以使用for循環遍歷集合的元素,在遍歷過程中,元素的顯示順序可能和加入的元素順序不一致。
例3:遍歷集合
3、 集合的更新
集合內置了add、update、remove方法用於集合元素的添加、更新及移除操作。另外也可以通過操作符「-=」從集合中刪除子集合。集合更新操作只適用於通過set創建的可變集合。
add方法用於添加一個集合成員;remove方法用於刪除一個集合成員;update用於從已存在的集合中添加一個或多個成員;操作符「-=」用於刪除集合中的子集合。
例4:集合更新
4、 集合的運算
Python語言的集合類型同數學集合類型一樣,也有求集合的併集、交集、差集、對稱差集運算。
集合的併集運算是把兩個集合合併成一個新的集合,集合合併後重複的成員被刪除。在Python語言中,使用符號『|』或union函數可以執行集合的合併運算。
集合的交集運算是求兩個集合的共有成員,兩個集合執行交集運算後返回新的集合,該集合中的每個元素同時是兩個集合中的成員。在Python語言中,使用符號『&』或intersection函數可以執行集合的交集運算。
集合的差集運算是求A集合與B集合之間的差值,A集合與B集合執行差集運算後返回新的集合,該集合的元素,只屬於集合A,而不屬於集合B。在Python語言中,使用符號『-』或difference函數可以執行集合的差集運算。
集合的對稱差集運算是集合的異或運算,A集合與B集合執行對稱差集運算後返回新的集合,該集合中的元素只能是屬於A集合或B集合的成員,不能同時屬於A和B集合。在Python語言中,使用符號『^』或symmetric_difference函數可以執行集合的對稱差集運算。
例5:集合運算
5、 集合常用的內置方法
前面已介紹了一些有關集合操作的函數和內置方法。下面對一些常用的內置方法做個小結。
6、 Python用於操作集合的函數
Python提供的set、frozenset、len函數可用於集合的聲明、返回集合成員個數。
課程小結
在Python語言中,集合存儲的元素無序且不能重複。集合有兩種不同的類型,可變集合和不可變集合,可變集合可以添加或刪除元素;不可變集合不能被修改。集合必須用Python提供的工廠函數來聲明,可變集合使用set函數,不可變集合使用frozenset函數。
集合不能像列表、元組一樣通過索引訪問集合存儲的元素,對集合元素的訪問只能使用成員操作符in或not in來判斷某元素是否在集合中。集合內置了add、update、remove方法用於集合元素的添加、更新及移除操作。另外也可以通過操作符「-=」從集合中刪除子集合。集合更新操作只適用於通過set創建的可變集合。
Python語言的集合類型同數學集合類型一樣,也有求集合的併集、交集、差集、對稱差集運算。