[Python 筆記] 初學者指南:用集合 (Set) 規劃聖誕旅行!學習基本集合操作技巧!

更新於 2024/12/11閱讀時間約 8 分鐘

Hi guys! 我是 Rex,今天繼續跟大家分享我的 Python 筆記。

Introduction

這次我要介紹一個我比較不熟悉的資料結構 - Set(集合)。集合有兩個特點:第一是集合中只有唯一 (unique) 的元素,第二是它是無順序的 (unordered)。如果覺得有點抽象,可以先看下面的Coding Example。集合使用大括號 {} 包裹數據,看起來和字典很像,但不要搞混哦!字典使用的是 key-value 實例,而集合則不使用這種結構。

優點:

  • 去重功能:因為集合只包含唯一的元素,所以可以很有效地去除列表或其他可迭代項目的重複元素。例如,你可以將一個包含重複客戶 ID 的列表轉換為集合,這樣能夠快速獲得所有的唯一客戶。
  • 數學集合操作:集合支持多種數學集合操作,例如聯集、交集、差集和對稱差集,這在各種數據分析任務中非常有用。例如,你可以利用集合操作來比較不同客戶的購買產品列表。



Coding Example

如同上面提到的,集合在各種領域中有著廣泛的應用,尤其是在數據處理時尤為重要。你可以利用集合去重複值,這在數據清理、探索和分析中至關重要。例如,你可以透過集合過濾掉重複的值,也可以通過集合找出對某個產品感興趣的所有用戶,並從中找出他們的共通點,如年齡、性別、地區、職業等,這有助於進一步的數據分析和市場推廣。接下來,我將介紹一系列的數學集合操作,包括聯集,交集,差集,和對稱差集。

正式開始前,建議你先跑跑看下面的程式碼,體會前面所描述的集合的特色。

​set_c = {3, 1, 9, 7, 5}
print(set_c) # output: {1, 3, 5, 7, 9} 輸出的順序被修改了

set_c = {3, 1, 9, 5, 5}
print(set_c) # output: {1, 3, 5, 9} 重複的值(5)被移除了

上一篇我以旅遊清單為例子解釋字典,今天我們以同樣的主題,為了應景即將到來的聖誕節,我們就來規劃一個聖誕節的旅遊吧!假設今天我和我的兩個朋友計劃聖誕節一起出國玩,每個人都列了一個清單,資料如下 ⬇️

my_list = {"Paris", "New York", "Tokyo", "Sydney"}
friend_a_list = {"Tokyo", "Berlin", "Paris", "London"}
friend_b_list = {"London", "New York", "Tokyo", "Rome"}
  1. 找出三個人都想去的地方,使用交集 set.intersection()
common_places = my_list.intersection(friend_a_list, friend_b_list)
print(common_places) # {"Tokyo"}
  1. 找出至少一人想去的所有地方,使用聯集 set.union() [注意這裡沒有重複值!]
all_places = my_list.union(friend_a_list, friend_b_list)
print(all_places) # {'Paris', 'New York', 'Tokyo', 'Sydney', 'Berlin', 'London', 'Rome'}
  1. 找出只有我想去的地方,使用差集 set.difference()
my_unique_places = my_list.difference(friend_a_list, friend_b_list)
print(my_unique_places) # {'Sydney'}
  1. 找出不被所有人同時選擇的地方,使用對稱差集 set.symmetric_difference()[備註: 集合數越多,這個 function 要執行越多次,示範如下]
# 這邊 function 執行兩次,因為有三個集合
symmetric_diff_all = my_list.symmetric_difference(friend_a_list).symmetric_difference(friend_b_list)
print(symmetric_diff_all) # {'Sydney', 'Rome', 'Berlin', 'Tokyo'}


這些是最常見且基本的集合操作,建議讀者可以先從 兩個集合 開始練習,熟悉操作後再慢慢增加到三個、四個甚至更多集合。隨著集合數量的增加,問題的複雜度也會逐漸提升,讓你更能體會集合操作的靈活性和應用價值!為了幫助理解,我還附上了一些直觀的圖表,讓你一目了然地掌握集合的概念與操作方式。

最後,在這個教學的結束,我也給大家兩個觀念題和兩個 Coding 題目,邀請各位讀者一起練習!希望大家能夠透過這些練習,進一步加深對集合的理解和應用。

Coding Question

  • 假設有三個音樂播放清單,分別表示三個朋友想聽的歌曲,請完成以下任務:
    • 找出大家共同想聽的歌曲。
    • (進階題) 找出至少有兩個人想聽的歌曲 。 (Hint: 交集 + 聯集)
# Example Data
playlist1 = {"Shape of You", "Blinding Lights", "Rolling in the Deep"}
playlist2 = {"Blinding Lights", "Havana", "Rolling in the Deep"}
playlist3 = {"Rolling in the Deep", "Blinding Lights", "Shallow"}

# Expected Output
#大家共同想聽的歌曲:{'Rolling in the Deep'}
#至少有兩個人想聽的歌曲:{'Blinding Lights', 'Rolling in the Deep'}

Concept Question

  • 你是否說出集合的特性,以及提供具體範例佐證?
  • 你是否能解釋聯集,交集,差集,和對稱差集的差異?


Conclusion

今天的 Set(集合)教學就到這裡啦!希望大家能透過這篇文章對集合有更深入的了解,並發現它在資料處理中的實用性。如果你對文章中提到的操作或應用有任何問題,歡迎在留言區提問,或者分享你用集合解決問題的經驗!也別忘了試試我提供的練習題目喔!

小預告:下一篇文章會繼續帶大家探索其他的資料結構,沒意外的話,將會介紹另一個資料結構 - 元組 (Tuple)(敬請期待!)。

祝大家練習順利,我們下次見啦~

Reference

avatar-img
1會員
7內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
CodingWRex的沙龍 的其他內容
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
在這篇文章中,Rex 分享了 Python 中的資料結構 - 列表。列表是一種可變且長度可變的序列,可以包含多種數據類型。文章介紹了列表的優點及其基本操作,包括新增、插入和刪除項目,並透過實際的旅遊清單範例來說明。適合對 Python 感興趣的初學者,瞭解列表的基本用法及其特性。
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
在這篇文章中,Rex 分享了 Python 中的資料結構 - 列表。列表是一種可變且長度可變的序列,可以包含多種數據類型。文章介紹了列表的優點及其基本操作,包括新增、插入和刪除項目,並透過實際的旅遊清單範例來說明。適合對 Python 感興趣的初學者,瞭解列表的基本用法及其特性。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。