Hi guys! 我是 Rex,今天繼續跟大家分享我的 Python 筆記。
這次我要介紹一個我比較不熟悉的資料結構 - Set(集合)。集合有兩個特點:第一是集合中只有唯一 (unique) 的元素,第二是它是無順序的 (unordered)。如果覺得有點抽象,可以先看下面的Coding Example。集合使用大括號 {}
包裹數據,看起來和字典很像,但不要搞混哦!字典使用的是 key-value
實例,而集合則不使用這種結構。
優點:
如同上面提到的,集合在各種領域中有著廣泛的應用,尤其是在數據處理時尤為重要。你可以利用集合去重複值,這在數據清理、探索和分析中至關重要。例如,你可以透過集合過濾掉重複的值,也可以通過集合找出對某個產品感興趣的所有用戶,並從中找出他們的共通點,如年齡、性別、地區、職業等,這有助於進一步的數據分析和市場推廣。接下來,我將介紹一系列的數學集合操作,包括聯集,交集,差集,和對稱差集。
正式開始前,建議你先跑跑看下面的程式碼,體會前面所描述的集合的特色。
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"}
.intersection()
common_places = my_list.intersection(friend_a_list, friend_b_list)
print(common_places) # {"Tokyo"}
.union()
[注意這裡沒有重複值!]all_places = my_list.union(friend_a_list, friend_b_list)
print(all_places) # {'Paris', 'New York', 'Tokyo', 'Sydney', 'Berlin', 'London', 'Rome'}
.difference()
my_unique_places = my_list.difference(friend_a_list, friend_b_list)
print(my_unique_places) # {'Sydney'}
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 題目,邀請各位讀者一起練習!希望大家能夠透過這些練習,進一步加深對集合的理解和應用。
# 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'}
今天的 Set(集合)教學就到這裡啦!希望大家能透過這篇文章對集合有更深入的了解,並發現它在資料處理中的實用性。如果你對文章中提到的操作或應用有任何問題,歡迎在留言區提問,或者分享你用集合解決問題的經驗!也別忘了試試我提供的練習題目喔!
小預告:下一篇文章會繼續帶大家探索其他的資料結構,沒意外的話,將會介紹另一個資料結構 - 元組 (Tuple)(敬請期待!)。
祝大家練習順利,我們下次見啦~