Python set 用法與範例

本篇介紹 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)) # 帶入 tuple 資料來初始化
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)

結果如下,

1
{1, 2, 3, 4, 5, 6, 7}

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)

結果如下,

1
2
3
4
5
1
2
3
4
5

Python set 刪除元素

Python set 使用 remove() 來移除刪除元素,
要注意移除一個不存在的元素會報錯(KeyError)唷!

1
2
3
4
5
s = {1, 2, 3, 4, 5}
s.remove(5)
#s.remove(6) # Error

print(s)

結果如下,

1
{1, 2, 3, 4}

Python 測試某元素是否在 set 裡

Python 如果要測試某元素是否在 set 裡的話可以使用 in 關鍵字,用法如下,

1
2
3
4
fruits = {'apple','banana','orange','lemon'}
print('tomato' in fruits)
result = 'apple' in fruits
print(result)

結果如下,

1
2
False
True

兩個 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))

結果如下,顛倒使用結果都相同,

1
2
{2, 4}
{2, 4}

兩個 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))

結果如下,

1
2
{1, 2, 3}
{8, 6, 7}

兩個 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 documentation
https://docs.python.org/3/library/stdtypes.html?#set

其它相關文章推薦
如果你想學習 Python 相關技術,可以參考看看下面的文章,
Python 檢查 set 集合是否為空
Python 新手入門教學懶人包
Python str 字串用法與範例
Python list 串列用法與範例
Python dict 字典用法與範例
Python tuple 元組用法與範例