python學習筆記(七)之集合2

2021-09-21 05:19:35 字數 2600 閱讀 7908

python學習筆記(七)之集合2

不變的集合

在」python學習筆記(六)之集合1「中以set()來建立集合,這種方式所建立的集合都是可原地修改的集合,或者說是可變的,也就是說是unhashable。

還有一種集合,不能在原處修改。這種集合的建立方法是用frozenset(),ps:frozen凍結的,是不可變的,也就是說是hashable--可雜湊。

例項1:

>> f_set = frozenset("wtf")

>> f_set

frozenset(['t', 'w', 'f'])

>> f_set.add("python")

traceback (most recent call last):

file "", line 1, in

attributeerror: 'frozenset' object has no attribute 'add'

說明:報錯說集合是不能修改的。

對比可以修改的集合:

例項2:

>> c_set = set("name")

>> c_set

set(['a', 'e', 'm', 'n'])

>> c_set.add("python")

>> c_set

set(['a', 'e', 'm', 'python', 'n'])

集合運算

元素與集合的關係

只有一種關係:元素要麼屬於集合,要麼不屬於。

例項3:

>> c_set 

set(['a', 'e', 'm', 'python', 'n'])

>> "a" in c_set

true

>> "wtf" in c_set

false

集合與集合的關係

判斷集合a是否等於集合b

例項4:

>> a = set(["q","w","t","f"])

>> b = set(["w","f","q","t"])

>> a == b

true

>> a != b

false

判斷集合c是否是集合b的子集,或者說b是否是a的超集(超集:即a的元素也都是b的元素,但是b的元素比a的元素數量多。)

例項5:

>> c = set(["w","t","f","g"])

>> d = set(["w","t"])

>> d < c ##d是c的子集

true

>> d.issubset(c) ##d是否是c的子集

true

>> c.issuperset(d) ##c是否是d的超集

true

集合的並集

表示式:a | b

或者使用函式a.union(b) ps:union聯盟

注意:a,b的並集得到的結果就是兩個集合並集,這個結果是新生成的乙個物件,不是將集合a擴充!

例項6:

>> a = set(["w","t","f"])

>> b = set(["z","h","a","o"])

>> a | b

set(['a', 't', 'w', 'f', 'h', 'z', 'o'])

>> a.union(b)

set(['a', 't', 'w', 'f', 'h', 'z', 'o'])

>> a

set(['t', 'w', 'f'])

>> b

set(['a', 'h', 'z', 'o'])

集合的交集

表示式:b & c

或者使用函式b.intersection(c) ps:intersection 路口

例項7:

>> b = set(["z","h","a","o"])

>> c = set(["z","y","d"])

>> b & c

set(['z'])

>> b.intersection(c)

set(['z'])

>> b

set(['a', 'h', 'z', 'o'])

>> c

set(['y', 'z', 'd'])

集合的補集

表示式:b - c ##b相對於c的差(補),即b相對於c不同的元素

或者使用函式 b.difference(c)

例項8:

>> b

set(['a', 'h', 'z', 'o'])

>> c

set(['y', 'z', 'd'])

>> b - c

set(['a', 'h', 'o'])

>> c - b

set(['y', 'd'])

>> b.difference(c)

set(['a', 'h', 'o'])

python學習筆記集合(七)

set 集合 是乙個無需不重複的元素資料集,對比列表的區別首先是無需的,不可以使用索引進行訪問,另外乙個特點是不能有重複資料。專案開發中,集合主要用於資料元素去重和測試是否存在。集合還支援一些數學上的運算,例如 union 聯合 intersection 交 difference 差 symmetr...

python之集合學習筆記

按我的理解,集合類似於數學中的集合這一概念。集合有以下幾個特性 1.集合內的元素是無序的,這和列表與元組不同,後兩者因為有序,所以可以用切片操作和下標索引。但集合不行。2.集合只能用工廠方法來生成,函式有兩個 set 與frozenset 分別是可變與不可變的集合工廠函式。a set beyond ...

Python學習筆記 七 集合

集合 set 是乙個無序的不重複元素序列。建立格式 parame 或者set value print basket 這裡演示的是去重功能 orange in basket 快速判斷元素是否在集合內 true crabgrass in basket false 下面展示兩個集合間的運算.a set a...