iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Python

一起來用 Snakify 練練手系列 第 23

【一起來用 Snakify 練練手】Day23 Lesson 10 概念

  • 分享至 

  • xImage
  •  

集合(Sets)

在 Python 中,set(集合)是一種無序且不重複的元素集合。集合中的每個元素都是唯一的,這意味著集合自動過濾掉重複的項目。集合是可變的,但集合內部的元素必須是不可變的類型(例如數字、字串、元組)。集合非常適合用於需要快速檢查元素是否存在或需要進行集合運算的場景。

1. 集合的定義與創建

可以使用花括號 {}set() 函數來創建集合。創建空集合時,必須使用 set(),因為 {} 創建的是字典。

範例:

# 使用花括號創建集合
fruits = {"apple", "banana", "cherry"}

# 使用 set() 創建集合
numbers = set([1, 2, 3, 4])

注意:集合是無序的,因此無法通過索引來訪問特定元素。

2. 集合的特性

2.1 唯一性

集合中的每個元素都是唯一的。如果創建集合時有重複的元素,Python 會自動去除它們。

範例:

numbers = {1, 2, 3, 3, 4, 4}
print(numbers)  # 輸出:{1, 2, 3, 4}

2.2 無序性

集合是無序的,這意味著元素在集合中的順序並不固定,無法使用索引來訪問元素。

範例:

fruits = {"apple", "banana", "cherry"}
# print(fruits[0])  # 這會產生錯誤,因為集合不支援索引

3. 操作集合

Python 提供了許多操作集合的方法,如添加元素、刪除元素以及檢查元素是否存在。

3.1 添加元素

可以使用 add() 方法來向集合中添加新元素。

範例:

fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits)  # 輸出:{'apple', 'banana', 'cherry'}

3.2 刪除元素

使用 remove() 方法可以刪除集合中的某個元素。如果該元素不存在,會引發錯誤。若不確定元素是否存在,可以使用 discard() 方法,該方法在元素不存在時不會引發錯誤。

範例:

fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits)  # 輸出:{'apple', 'cherry'}

fruits.discard("banana")  # 不會引發錯誤

3.3 檢查元素是否存在

可以使用 in 關鍵字來檢查某個元素是否存在於集合中。

範例:

fruits = {"apple", "banana", "cherry"}
print("apple" in fruits)  # 輸出:True
print("orange" in fruits)  # 輸出:False

4. 集合的操作

集合提供了強大的集合運算功能,包括聯集、交集、差集和對稱差集等。

4.1 聯集(Union)

聯集返回兩個集合中所有元素的集合。使用 union() 方法或 | 運算符。

範例:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set)  # 輸出:{1, 2, 3, 4, 5}

# 使用 | 運算符
union_set = set1 | set2
print(union_set)  # 輸出:{1, 2, 3, 4, 5}

4.2 交集(Intersection)

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

範例:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1.intersection(set2)
print(intersection_set)  # 輸出:{3}

# 使用 & 運算符
intersection_set = set1 & set2
print(intersection_set)  # 輸出:{3}

4.3 差集(Difference)

差集返回在第一個集合中,但不在第二個集合中的元素。使用 difference() 方法或 - 運算符。

範例:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1.difference(set2)
print(difference_set)  # 輸出:{1, 2}

# 使用 - 運算符
difference_set = set1 - set2
print(difference_set)  # 輸出:{1, 2}

4.4 對稱差集(Symmetric Difference)

對稱差集返回兩個集合中不重疊的元素。使用 symmetric_difference() 方法或 ^ 運算符。

範例:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)  # 輸出:{1, 2, 4, 5}

# 使用 ^ 運算符
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set)  # 輸出:{1, 2, 4, 5}

5. 集合的應用

集合常用於以下場景:

  1. 去重:集合會自動移除重複的元素,因此可以用來快速去重。

    範例:

    numbers = [1, 2, 2, 3, 4, 4, 5]
    unique_numbers = set(numbers)
    print(unique_numbers)  # 輸出:{1, 2, 3, 4, 5}
    
  2. 集合運算:當需要進行聯集、交集等集合運算時,集合是非常方便的資料結構。

6. 集合的生成器

可以使用集合生成器來動態創建集合,語法與列表生成器類似。

範例:

squares = {x**2 for x in range(1, 6)}
print(squares)  # 輸出:{1, 4, 9, 16, 25}

這裡我們使用集合生成器創建了一個包含 1 到 5 的平方數的集合。

7. 總結

集合(set)是 Python 中一種無序且唯一的資料結構,適合用於需要去重或進行集合運算的場景。通過各種集合運算方法(如聯集、交集、差集和對稱差集),我們可以輕鬆處理數據之間的關聯。集合還可以通過生成器來創建,這進一步提高了集合的靈活性。

台灣首發晶片設計教材明天要開始募資啦
趕快點擊去了解 👉 https://wlinny.com


上一篇
【一起來用 Snakify 練練手】Day22 Lesson 9 練習題參考解答-2
下一篇
【一起來用 Snakify 練練手】Day24 Lesson 10 練習題參考解答
系列文
一起來用 Snakify 練練手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言