python學習_8——集合set與固定集合frozenset

1 集合 set

1)集合介紹

集合時可變的容器
集合內的數據對象是唯一的,不能重複多次
集合是無序的存儲結構,集合中的數據沒有先後關係
集合內的元素必須是不可變的對象
集合是可迭代的,可以使用for語句遍歷
集合是相當於只要鍵沒有值的字典,鍵則是集合的數據

2)集合的創建

1.創建集合的構造函數:
set() 創建一個空集合對象的唯一方式(不能使用{}來創建空集合)
set(iterable)用可迭代對象來創建新的集合

示例:

s = set() 			#s綁定一個空集合
s = set(range(1,5))	#s = {1,2,3,4}
s = set("hello")	#s = {'h', 'o', 'e', 'l'},去重了

注:非空集合用{}括起來,內部各個元素用逗號“,”分割開

2.字面值方式來創建非空集合:

s = {1,2,3,4,5,1,3}		#s = {1, 2, 3, 4, 5},去重
#不可以使用s = {},此時創建的不是一個集合set,而是一個字典
s = set({1:"1",2:"2",3:"3"})	#s = {1, 2, 3}
#由於字典本身爲一個可迭代對象,對其進行迭代時,字典提供他的鍵出來
s = set([1,32.3,'ad'])		#s = {32.3, 1, 'ad'}
s = {1,2,'s',(1,2)}			#s = {1,2,'s',(1,2)}
s = {1,2,'s',[1,2]}			#error ,[1,2]是一個可變對象

3.集合推導式
集合推導式是用可迭代對象創建集合的表達式

語法:

{ 表達式 for 變量 in 可迭代對象 [ if 真值表達式] }

注:[]代表其中內容可以省略
如果運算結果中有重複元素,會自動去重
示例:

s = { x**2 for x in  range(6) if x > 3}
#s = { 16, 25 } 

集合推導式的嵌套等同於列表推導式的嵌套

3)集合的運算:

交集	&
並集	|
補集	-
對稱補集^
子集	<
超集	>

示例:

>>> s = {1,2,3}
>>> s1 = {1,4,5}
&:生成兩個集合的交集
	s&s1 = {1}
|:生成兩個集合的並集
	s|s1 = {1, 2, 3, 4, 5}
-:生成前一個集合對應於後一個集合的補集,即生成屬於前一個集合但不屬於後一個集合的元素組成的集合
	s-s1 = {2, 3}
^:生成兩個集合的對稱補集,即去掉兩個集合的公共元素後合併
	s^s1 = {2, 3, 4, 5}
<:判斷一個集合是另一個集合的子集
>:判斷一個集合是另一個集合的超集
	s2 = {1,2}
	s2 < s		#True
	s > s2		#True
	s2 < s1		#False
== != :判斷集合相同或者不同
	{1,2,3} == {3,2,1}	#True
>=,<= :表示子集或者相當 與 超集或者相等
in , not in 運算符:
	等同於列表的in,not in 運算符
	3 in s		#True
集合和字典的優點:
	in ,not in 運算速度比較快

能用於集合的內建函數:
len(x),max(x),min(x),sum(x),any(x),all(x)

4)python3中常用的集合方法:

方法 作用
S.add(e) 在集合中添加一個新的元素e;如果元素已經存在,則不添加
S.remove(e) 從集合中刪除一個元素,如果元素不存在於集合中,則會產生一個KeyError錯誤
S.discard(e) 從集合S中移除一個元素e,在元素e不存在時什麼都不做;
S.clear() 清空集合內的所有元素
S.copy() 將集合進行一次淺拷貝
S.pop() 從集合S中刪除一個隨機元素;如果此集合爲空,則引發KeyError異常
S.update(s2) 等同於 S l= s2, 用 S與s2得到的全集更新變量S
S.difference(s2) S - s2 補集運算,返回存在於在S中,但不在s2中的所有元素的集合
S.difference_update(s2) 等同於 S -= s2
S.intersection(s2) 等同於 S & s2
S.intersection_update(s2) 等同於S &= s2
S.isdisjoint(s2) 如果S與s2交集爲空返回True,非空則返回False
S.issubset(s2) 如果S與s2交集爲非空返回True,空則返回False
S.issuperset(…) 如果S爲s2的子集返回True,否則返回False
S.symmetric_difference(s2) 返回對稱補集, 等同於 S ^ s2
S.symmetric_difference_update(s2) 等同於 S ^= s2, 用 S 與 s2 的對稱補集更新 S
S.union(s2) 生成 S 與 s2的全集, 等同於 S

2 固定集合 frozenset

1)介紹

可變的對象對應的不可變的對象
list ==> tuple
set ==> frozenset
固定集合是不可變的,無序的,含有唯一元素的集合(可以看成一個不可以改變的集合)

作用:
固定集合可以作爲字典的鍵,還可以作爲集合的值

d = { frozenset({1,2,3}):"123" }

2)固定集合 frozenset的創建

固定集合的構造函數 frozenset()
frozense() 創建一個空的固定集合
frozenset(iterable) 用可迭代對象創建一個新的固定集合
示例:

fz = frozenset()
fz = frozenset("hello")
fz = frozenset([1,2,3,4,5])

3)固定集合的運算:

交集 & ,並集 |,補集 -,對稱補集 ^
in ,not in運算
is , is not運算
<,<=,>,>= ==,!=
(以上的運算符用法都等同於set中該運算符的用法)

固定集合的方法,相當於集合的全部方法去掉修改集合的方法

下一篇:python學習_9——函數function介紹與基礎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章