本篇介紹 Python set 用法與範例,Python set 物件是無序的集合(unordered collection),set 很重要的精隨是 set 不會包含重複的資料,以下為 Python set 的基本用法與範例。
以下 Python set 用法內容分為這幾部份,
Python 初始化 set
Python set 加入元素
Python 印出 set 裡所有元素
Python set 刪除元素
Python 測試某元素是否在 set 裡
兩個 set 的交集
兩個 set 的聯集
兩個 set 的差集
兩個 set 的對稱差集
Python 初始化 set Python set 集合初始化元素使用 {}
來包住元素,也可以帶入 set() 建構子,但若要建立空的 set 要使用 set()
,使用 s = {}
是會建立空 dict,不要搞錯囉! Python 官方文件寫明 set 物件是無序,即使你印出來時發現是按照順序的,所以在使用 set 時請記得不保證有序的, 另外 set 裡是不會包含重複的元素,1 2 3 4 5 6 7 8 9 10 11 12 13 14 s1 = set() s2 = set((2 , 3 , 1 )) s3 = {1 , 2 , 3 , 4 , 5 } s4 = {1 , 1 , 2 , 3 , 3 } print(s1) print(s2) print(s3) print(s4) print(type(s1)) print(type(s2)) print(type(s3)) print(type(s4))
結果如下,1 2 3 4 5 6 7 8 set() {1, 2, 3} {1, 2, 3, 4, 5} {1, 2, 3} <class 'set'> <class 'set'> <class 'set'> <class 'set'>
Python set 加入元素 Python set 使用 add() 來加入新元素,用法如下, 要注意 set 不會包含重複的元素唷!1 2 3 4 5 6 s = {1 , 2 , 3 , 4 , 5 } s.add(6 ) s.add(7 ) s.add(7 ) print(s)
結果如下,
Python 印出 set 裡所有元素 這是 Python 最簡單印出 set 的方法,用法如下,1 2 s = {1 , 2 , 3 , 4 , 5 } print(s)
或者用 for 迴圈迭代,像下面這樣寫, 要注意 set 無法像 list 那樣使用 index 索引元素,1 2 3 s = {1 , 2 , 3 , 4 , 5 } for i in s: print(i)
結果如下,
Python set 刪除元素 Python set 使用 remove() 來移除刪除元素, 要注意移除一個不存在的元素會報錯(KeyError)唷!1 2 3 4 5 s = {1 , 2 , 3 , 4 , 5 } s.remove(5 ) print(s)
結果如下,
Python 測試某元素是否在 set 裡 Python 如果要測試某元素是否在 set 裡的話可以使用 in 關鍵字,用法如下,1 2 3 4 fruits = {'apple' ,'banana' ,'orange' ,'lemon' } print('tomato' in fruits) result = 'apple' in fruits print(result)
結果如下,
兩個 set 的交集 這邊介紹 Python 怎麼取出兩個 set 的交集(intersection),Python 取 set 的交集要使用 &
符號就會取出兩 set 中相同的元素,交集的用法範例如下,1 2 3 4 fruits1 = {'apple' ,'banana' ,'orange' ,'lemon' } fruits2 = {'tomato' ,'apple' ,'banana' } print(fruits1 & fruits2) print(fruits2 & fruits1)
結果如下,1 2 {'apple', 'banana'} {'apple', 'banana'}
你也可以使用 intersection() 來取得交集,intersection() 用法範例如下,1 2 3 4 nums1 = {1 ,2 ,3 ,4 ,5 } nums2 = {2 ,4 ,6 ,8 ,10 } print(nums1.intersection(nums2)) print(nums2.intersection(nums1))
結果如下,顛倒使用結果都相同,
兩個 set 的聯集 這邊介紹 Python 怎麼取出兩個 set 的聯集(union),Python 取 set 的聯集要使用 |
符號就會取出兩 set 中所有的元素,聯集的用法範例如下,1 2 3 4 fruits1 = {'apple' ,'banana' ,'orange' ,'lemon' } fruits2 = {'tomato' ,'apple' ,'banana' } print(fruits1 | fruits2) print(fruits2 | fruits1)
結果如下,1 2 {'orange', 'banana', 'tomato', 'lemon', 'apple'} {'orange', 'banana', 'tomato', 'lemon', 'apple'}
你也可以使用 union() 來取得聯集,union() 用法範例如下,1 2 3 4 nums1 = {1 ,2 ,3 ,4 ,5 } nums2 = {2 ,4 ,6 ,8 ,10 } print(nums1.union(nums2)) print(nums2.union(nums1))
結果如下,顛倒使用結果都相同,1 2 {1, 2, 3, 4, 5, 6, 8, 10} {1, 2, 3, 4, 5, 6, 8, 10}
兩個 set 的差集 這邊介紹 Python 怎麼取出兩個 set 的差集(difference),Python 取 set 的差集要使用 -
符號就會取出 set 與另外一個 set 的差集,舉例來說,fruits1-fruits2 會得到 fruits1 set 元素且不包含 fruits2 set 的元素,如果是 fruits2-fruits1 會得到 fruits2 set 元素且不包含 fruits1 set 的元素,差集的用法範例如下,1 2 3 4 fruits1 = {'apple' ,'banana' ,'orange' ,'lemon' } fruits2 = {'orange' ,'lemon' ,'tomato' } print(fruits1 - fruits2) print(fruits2 - fruits1)
結果如下,1 2 {'apple', 'banana'} {'tomato'}
你也可以使用 difference() 來取得差集,difference() 用法範例如下,1 2 3 4 nums1 = {1 ,2 ,3 ,4 ,5 } nums2 = {4 ,5 ,6 ,7 ,8 } print(nums1.difference(nums2)) print(nums2.difference(nums1))
結果如下,
兩個 set 的對稱差集 這邊介紹 Python 怎麼取出兩個 set 的對稱差集(symmetric difference),Python 取 set 的對稱差集要使用 ^
符號就會取出兩 set 不重複的元素或非交集的元素,對稱差集的用法範例如下,1 2 3 4 fruits1 = {'apple' ,'banana' ,'orange' ,'lemon' } fruits2 = {'orange' ,'lemon' ,'tomato' } print(fruits1 ^ fruits2) print(fruits2 ^ fruits1)
結果如下,1 2 {'tomato', 'banana', 'apple'} {'tomato', 'banana', 'apple'}
你也可以使用 symmetric_difference() 來取得對稱差集,symmetric_difference() 用法範例如下,1 2 3 4 nums1 = {1 ,2 ,3 ,4 ,5 } nums2 = {4 ,5 ,6 ,7 ,8 } print(nums1.symmetric_difference(nums2)) print(nums2.symmetric_difference(nums1))
結果如下,顛倒使用結果都相同,1 2 {1, 2, 3, 6, 7, 8} {1, 2, 3, 6, 7, 8}
下一篇將介紹 dict 字典的用法
以上就是 Python set 用法與範例介紹, 如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚 支持一下!
其他參考 Built-in Types set — Python 3 documentationhttps://docs.python.org/3/library/stdtypes.html?#set
其它相關文章推薦 如果你想學習 Python 相關技術,可以參考看看下面的文章,Python 檢查 set 集合是否為空 Python 新手入門教學懶人包 Python str 字串用法與範例 Python list 串列用法與範例 Python dict 字典用法與範例 Python tuple 元組用法與範例