iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 12

從0開始學習Python---集合(Set)

  • 分享至 

  • xImage
  •  

集合(Set):資料的唯一性與高效處理

集合是一種無序不允許重複元素的資料結構,適合用來處理去除重複值的操作。集合中的元素必須是不可變的,這代表不能將列表等可變物件放入集合中。

優點

  1. 唯一性:集合不允許重複的元素,這使它在需要唯一資料的情況下非常有用。任何重複的元素會被自動去除。
  2. 無序性:集合內部的元素沒有固定順序,因此不能使用索引來存取元素。
  3. 定義方式:集合使用大括號 {} 來定義,例如:{1, 2, 3},也可以使用 set() 函數來創建集合。
  4. 集合操作:集合可用來操作聯集、交集、差集等數學運算,能幫助處理大型資料集合。

進階功能

  • 聯集(Union):可以使用 |union() 方法來聯合兩個集合,得到所有不重複的元素。
  • 交集(Intersection):使用 &intersection() 方法來得到兩個集合中的共同元素。
  • 差集(Difference):使用 -difference() 來得到只存在於一個集合中的元素。

應用

班級興趣統計

假設班上同學的興趣有 {"籃球", "足球", "羽毛球", "籃球", "桌球", "足球"},統計不同的興趣數量並列出所有興趣。

https://ithelp.ithome.com.tw/upload/images/20240912/20168994ON4Cw9E7B0.png
https://ithelp.ithome.com.tw/upload/images/20240912/20168994U15S1d8Zth.png

  1. 我們先用一個列表來儲存班上同學的興趣,但有些興趣是重複的,所以等等要來處理掉重複的部分。
  2. 接著我們把這個列表轉換成一個集合。因為集合的特性是不能有重複的元素,所以當我們把列表轉成集合時,所有重複的興趣就會自動被去掉,這樣就可以確保所有興趣只統計一次而已。
  3. 最後使用 print 函數列出集合裡的所有興趣,並計算有多少種不同的興趣。這樣我們就能清楚的知道班上有哪些愛好、以及有幾種了。

集合運算 - 找出共同愛好

有兩個班級,班級 A 的同學愛好 {"籃球", "足球", "乒乓球"},班級 B 的同學愛好 {"足球", "羽毛球", "乒乓球"},請找出兩個班級之間的共同愛好,以及 A 班特有的愛好。

https://ithelp.ithome.com.tw/upload/images/20240912/20168994IlTwb6RdT4.png
https://ithelp.ithome.com.tw/upload/images/20240912/20168994gw9tmvdijR.png

  1. 與上一題一樣,我們還是先使用集合來存每個班級的興趣。因為集合可以很方便的進行數學運算,比如找出共同的愛好(交集)。
  2. 再來要找出班級 A 和班級 B 的共同愛好,代表要找出它們的交集。而 & 就是集合中的交集運算符,它會幫忙找出兩個集合中都有的元素。在這個例子中,它會找出兩個班級都喜歡的愛好。
    用這個方法我們就可以知道兩個班級有哪些是共同興趣的,比如說班級 A 喜歡籃球、足球、乒乓球,班級 B 喜歡足球、羽毛球和乒乓球,那麼交集就是足球和乒乓球,因為這兩個愛好是兩個班級都有的。
  3. 接下來要找出班級 A 裡面有哪些愛好是班級 B 沒有的,也就是要找出差集。
    集合中的 - 代表差集,它會幫我們找到只存在於班級 A 而不在班級 B 裡的元素。這樣我們就可以知道哪些活動是班級 A 特有的愛好,比如班級 A 喜歡籃球,但班級 B 沒有籃球這個愛好,這樣籃球就是班級 A 特有的愛好。

總結:元組、字典、集合的對比與應用

最後,我們為這兩天所學的做個複習和總結吧~

  1. 元組 (Tuple):用來儲存不變的、有序的資料,例如座標、設定值等。元組的穩定性和效率適合用於固定資料的管理。
  2. 字典 (Dictionary):適合用於快速查找資料,尤其是當資料與唯一鍵(例如學生姓名)相對應時。此外,字典是可變的,可以靈活的增刪和修改資料。
  3. 集合 (Set):適合處理需要去重複的資料,並且它支援聯集、交集、差集等數學運算,也可用於統計、資料過濾等應用。

結語

今天學到的集合,感覺很像之前會在數學裡算的那個「集合」,概念也幾乎一樣,但用在程式裡能做的事情更多。它可以幫忙快速的去除掉重複的元素,雖然今天實作裡重複的資料用肉眼就可以很好的分辨出來,但若是碰到龐大資料,感覺就能感受到集合的大用處。
學完元組、字典、集合後,之後處理資料就會快很多,因為它們可以幫忙處理一些繁瑣的東西,程式的運作上就更有效率了><


上一篇
從0開始學習Python---元組(Tuple)、字典(Dictionary)
下一篇
從0開始學習Python---函數、最大公因數
系列文
從0開始學習Python-為未來學習AI奠定基礎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言