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

更新於 發佈於 閱讀時間約 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
留言分享你的想法!
avatar-img
CodingWRex的沙龍
1會員
7內容數
CodingWRex的沙龍的其他內容
2024/12/17
在這篇新手必學指南中,探索如何使用 Python 的 Lambda Function 來進行資料篩選和轉換操作。從篩選數字到調整產品價格,通過實際範例和練習題,幫助你更清晰地理解其應用以及主要優點,並學會如何在 Python 中高效處理資料。開始提升你的 Python 技能,掌握資料分析的基本技巧!
Thumbnail
2024/12/17
在這篇新手必學指南中,探索如何使用 Python 的 Lambda Function 來進行資料篩選和轉換操作。從篩選數字到調整產品價格,通過實際範例和練習題,幫助你更清晰地理解其應用以及主要優點,並學會如何在 Python 中高效處理資料。開始提升你的 Python 技能,掌握資料分析的基本技巧!
Thumbnail
2024/12/16
本篇Python筆記介紹了List和Dictionary Comprehensions的應用與優勢。通過具體例子展示如何利用這些生成式來進行資料篩選、轉換和整合,並提升程式碼的可讀性和效能。適合新手學習如何用簡潔的語法來快速創建和操作資料結構,幫助你在資料分析中更靈活應用Python。
Thumbnail
2024/12/16
本篇Python筆記介紹了List和Dictionary Comprehensions的應用與優勢。通過具體例子展示如何利用這些生成式來進行資料篩選、轉換和整合,並提升程式碼的可讀性和效能。適合新手學習如何用簡潔的語法來快速創建和操作資料結構,幫助你在資料分析中更靈活應用Python。
Thumbnail
2024/12/13
在這篇文章中,通過聖誕節主題來學習Python內建序列函式。介紹了enumerate(), zip(), sorted() 和 reversed()。示範了如何在迭代過程中追蹤索引和值、將多個序列合併成對、對可迭代對象進行排序和反向顯示等操作。這些函式簡化了代碼,提升了可讀性和效能,適合新手學習。
Thumbnail
2024/12/13
在這篇文章中,通過聖誕節主題來學習Python內建序列函式。介紹了enumerate(), zip(), sorted() 和 reversed()。示範了如何在迭代過程中追蹤索引和值、將多個序列合併成對、對可迭代對象進行排序和反向顯示等操作。這些函式簡化了代碼,提升了可讀性和效能,適合新手學習。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
Thumbnail
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
Hi, 大家好。我是茶桁 通过最近几节课的内容,我们已经了解到了大部分的容器类数据的特性和应用,今天这一节课是容器类数据的最后一部分。让我们今天来详细了解一下「集合」。
Thumbnail
Hi, 大家好。我是茶桁 通过最近几节课的内容,我们已经了解到了大部分的容器类数据的特性和应用,今天这一节课是容器类数据的最后一部分。让我们今天来详细了解一下「集合」。
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News