Python-Set

Tuesday, Nov 19, 2024 | 2 minute read | Updated at Tuesday, Nov 19, 2024

@
Python-Set

Set 集合

Set 集合是什麼

集合的特性:
1.集合裡的元素不會重複。
2.集合裡的元素沒有順序。

建立集合

1.使用{}

s1 = {1,2,3,3,4,3,4}
print(s1) #{1,2,3,4}

type(s1) #<class "set">

2.使用set()

s2 = set([1,2,3,3,4,3,4])
print(s2) #{1,2,3,4}

集合的作用

透過集合裡面不重複的特性,可以篩選掉重複的值,但要注意篩出來的結果不一定會按照原來的順序排列。
另外集合不接受不可雜湊的物件:

s5 = {[1,2],3,4}

TypeError:unhashable type: "list"

當放入不可雜湊的物件[1,2]會飽出錯誤訊息。

空集合={}?

之前提的的物件皆有空值
[] 空串列,() 空 Tuple,那空集合是{}嗎?
答案是 NO! {}是空字典。而空集合必須使用set()

s = set()
#這樣才會得到一個空集合

複製集合

集合有兩種方式可以做複製: 1.使用set()
2.使用.copy()

all = {1,2,3,4,5}
s1 = all.copy
s2 = set(all)

集合因為沒有順序的關係,因此無法使用切片來複製。


交集、聯集、差集的運算

在開始消耗腦細胞之前,先來張示意圖,複習一下數學課: 圖片名稱

交集

是兩個共同有的東西,使用&.intersection()

s1 = {1,3,5,7,9}
s2 = {3,6,9,12,15}

s1 & s2 #{3,9}
S1.intersection(S2)#{3,9}

另外可以用.isjisdoint()來判斷是否有重複(交集)

s1 = {1,3,5,7,9}
s2 = {3,6,9,12,15}
s3 = {2,4,6,8}

s1.isjisdoint(s2) #False 有交集
s1.isjisdoint(s3) #True 無交集

聯集

是兩個所有的東西,使用|.union()

s1 = {1,3,5,7,9}
s2 = {3,6,9,12,15}

s1 | s2 #{1,3,5,6,7,9,12,15}
S1.union(S2)#{1,3,5,6,7,9,12,15}

差集

是兩個所有的東西,使用-.different()
注意這邊先後順序會有差別

s1 = {1,3,5,7,9}
s2 = {3,6,9,12,15}

s1 - s2 #{1,5,7}
S1.different(S2)#{1,5,7}

s2 - s1 #{6,12,15}
S2.different(S1)#{6,12,15}

子集合、超集合、嚴格子集

之後再補充 python:910

子集合

超集合

嚴格子集


集合推導式

容易混淆的{}

集合推導式長這樣:

s = {n for n in range(5)}
type(s) # <class "set">

但注意,如果裡面帶的是 key:value,就會變成是字典推導式

dict = {n:n for n in range(5)}
dict # {0:0, 1:1, 2:2, 3:3, 4:4}

冷凍集合

在集合中,可以使用forzenset()讓集合裡的物件無法被變更,像是 Tuple 的效果。
因為 forzenset 為不可變的,所以屬於一種可“雜湊物件”。

© 2024 - 2025 Joanna's Blog

🌟 A Hugo theme named Dream

About Me

Hello I’m Joanna, this is my blog

我會在這邊分享我學習程式語言的心得與筆記