前言
在上一個資料儲存型態裡面,介紹過了陣列(Array),也明白Array的操作方式有幾個特性:Array具有索引性,也就是它能夠依據「位置」的排序,去查找先後順序,而也因此衍伸出了幾種可以對Array進行變更的函式,比如新增(append)、插入(insert),又或者是刪除(remove)、清除(removeall),這幾個方式是對Array進行變更的方式,了解完它的特性之後,下一種資料儲存方式,會談到的是集合(Set)
正文
集合跟陣列、字典的不同在於集合就是一個涵括所有內容的概念,集合像一個袋子,他把所有的東西裝在一起,
但不會跟你講說你要第幾個項目,我拿給你相應的項目(陣列的概念)
or 你跟我講我關鍵字,我把對應的東西拿給你(字典的概念)
,你只能問他,這裡面有沒有A這個東西,他回答有或是沒有(集合的概念)
了解它的運作模式,就會知道,集合這個概念就是「從一個袋子裡面拿出東西」。

它跟陣列不一樣的地方,在於它沒有排序性、沒有索引性、不可以有重複項,你只能問它:「存在或不存在?」
不過,集合這個東西同樣有所謂的「新增值」與「刪除值」的方式:
增加insert

假若你要新增一個字串,那就insert你要增加的東西。但由於集合並沒有排序的概念,所以你可能每次Run的程式碼在結果都不一樣,所以它的新增跟陣列不一樣,不用加上「位置」



上面三個都不一樣,也就說明了集合的特性。
刪除remove
假若你要刪除全部,則可以用names = []的方式進行

不過,集合這種資料儲存方式,還有其他的東西可以探討,比如像是高中數學曾經在某堂課提到的「集合運算」,也就是所謂的:交集、聯集、對稱差集、差集

交集(intersects):取兩個集合的共通處
差集(exclusive):取兩個集合共通處之外的部分
聯集(union):兩個集合交集與差集的部分
對稱差集(substract):取兩個集合其中一集合的差集
總而言之,這四個集合運算的方式,我們在下面以一些小案例作為解釋:
假若以下面這幾個集合為基本案例

交集(intersects)
取兩個集合的共通處

差集(exclusive)
取兩個集合共通處之外的部分

聯集(union)
兩個集合交集與差集的部分

對稱差集(substract):取兩個集合其中一集合的差集

綜合言之,集合這個概念從一開始就是「無序」、「不可索引的」、「不可以有重複項」,它跟陣列有很大的差別。但它可以進行所謂的集合運算,這應該算是它的優勢。所以之後要資料儲存的時候。要記得選擇適合的方式儲存哦!