文章

第10天:集合(Set)

課程簡介

集合(Set)是一種無序且不重複的元素集合。集合最常用於去除重複元素、檢查關係(如聯集、交集、差集等)。今天我們將學習如何建立集合、操作集合,以及如何使用集合進行不同的集合運算。


學習內容

1. 建立集合

集合可以使用大括號 {} 或者 set() 函數來創建。需要注意的是,集合中的元素是無序的,且不允許重複。

範例:

1
2
3
4
5
6
7
# 使用大括號建立集合
fruits = {"apple", "banana", "cherry", "apple"}
print(fruits)  # 輸出: {'apple', 'banana', 'cherry'} (重複的元素被自動去除)

# 使用 set() 函數建立集合
numbers = set([1, 2, 3, 4, 4, 5])
print(numbers)  # 輸出: {1, 2, 3, 4, 5}

2. 新增與刪除元素

  • 使用 add() 方法可以向集合中新增元素。
  • 使用 remove()discard() 方法來移除元素,remove() 若元素不存在會報錯,而 discard() 不會。
  • 使用 pop() 方法可以移除集合中的任意一個元素。

範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fruits = {"apple", "banana", "cherry"}

# 新增元素
fruits.add("orange")
print(fruits)  # 輸出: {'apple', 'banana', 'cherry', 'orange'}

# 移除元素
fruits.remove("banana")
print(fruits)  # 輸出: {'apple', 'cherry', 'orange'}

# 使用 discard 不會報錯
fruits.discard("banana")  # 不會有錯誤

# 使用 pop() 移除隨機元素
fruits.pop()
print(fruits)  # 會移除任意元素

3. 集合運算

3.1 聯集(Union)

聯集會返回兩個集合中所有不重複的元素,可以使用 | 運算符或 union() 方法。

範例:

1
2
3
4
5
6
7
8
a = {1, 2, 3}
b = {3, 4, 5}

# 使用 | 運算符
print(a | b)  # 輸出: {1, 2, 3, 4, 5}

# 使用 union() 方法
print(a.union(b))  # 輸出: {1, 2, 3, 4, 5}

3.2 交集(Intersection)

交集會返回兩個集合中共同的元素,可以使用 & 運算符或 intersection() 方法。

範例:

1
2
3
4
5
6
7
8
a = {1, 2, 3}
b = {3, 4, 5}

# 使用 & 運算符
print(a & b)  # 輸出: {3}

# 使用 intersection() 方法
print(a.intersection(b))  # 輸出: {3}

3.3 差集(Difference)

差集會返回只存在於第一個集合而不在第二個集合中的元素,可以使用 - 運算符或 difference() 方法。

範例:

1
2
3
4
5
6
7
8
a = {1, 2, 3}
b = {3, 4, 5}

# 使用 - 運算符
print(a - b)  # 輸出: {1, 2}

# 使用 difference() 方法
print(a.difference(b))  # 輸出: {1, 2}

3.4 對稱差集(Symmetric Difference)

對稱差集會返回兩個集合中不共同的元素,可以使用 ^ 運算符或 symmetric_difference() 方法。

範例:

1
2
3
4
5
6
7
8
a = {1, 2, 3}
b = {3, 4, 5}

# 使用 ^ 運算符
print(a ^ b)  # 輸出: {1, 2, 4, 5}

# 使用 symmetric_difference() 方法
print(a.symmetric_difference(b))  # 輸出: {1, 2, 4, 5}

4. 集合的其他操作

  • len():返回集合的大小。
  • clear():清空集合。
  • in:檢查元素是否存在於集合中。

範例:

1
2
3
4
5
6
7
8
9
10
11
fruits = {"apple", "banana", "cherry"}

# 集合的長度
print(len(fruits))  # 輸出: 3

# 檢查元素是否存在
print("apple" in fruits)  # 輸出: True

# 清空集合
fruits.clear()
print(fruits)  # 輸出: set()

教學重點

  • 集合的定義:學會如何創建集合,理解集合中元素的無序性和不重複性。
  • 新增與刪除元素:掌握 add()remove()discard()pop() 方法的使用。
  • 集合運算:了解如何進行聯集、交集、差集和對稱差集運算。
  • 集合的其他操作:如 len()clear()in 的應用。

任務

  1. 建立一個包含 5 個不同數字的集合,新增一個新數字,並刪除其中一個數字。
  2. 使用集合運算找出兩個數字集合的聯集、交集和差集。
  3. 撰寫一個程式,檢查某個字是否在一個字串轉換為集合的結果中。
  4. 清空一個集合,並確認它已變成空集合。
本文章以 CC BY 4.0 授權