Python小知識-序列資料結構之集合set(四)
阿新 • • 發佈:2019-01-10
這篇文章講的是Python的集合set型別
set集合簡介
集合是一個無序的(類似無序的還有字典),不重複的資料集合。其基本功能包括下面兩種:
- 去重:把一個還有重複元素的列表或元組等資料型別轉變成集合,其中的重複元素只出現一次。使用set()方法。
- 進行關係測試:測試兩組資料之間的交集,差集,並集等資料關係。
1. 建立集合set——去重
可以使用大括號{}或者set()函式建立集合。注意:建立一個空集合必須用set()而不是{ },因為{ }是用來建立一個空字典
student ={ 'Jack', 'Jim', 'Mary', 'Tom' , 'Tom', 'Rose'}
print( student) #輸出集合,重複的元素被自動去掉
以上例項輸出結果為:
{ 'Jack', 'Rose', 'Mary', 'Jim', 'Tom'}
2.集合運算
2.1 交集
兩個集合 A 和 B 的交集是含有所有既屬於 A 又屬於 B 的元素,而沒有其他元素的集合。使用 & 操作符執行交集操作,也可使用方法 intersection() 。
a = set('12345')
b = set('45678')
print(a&b)
print(a.intersection(b))
結果:
{‘4’, ‘5’}
{‘4’, ‘5’}
2.2 差集
A 與 B 的差集是所有屬於 A 且不屬於 B 的元素構成的集合。使用操作符 - 執行差集操作,同樣地,也可使用方法 difference() 完成。
a = set('12345')
b = set('45678')
print(a-b)
print(a.difference(b))
結果:
{‘2’, ‘3’, ‘1’}
{‘2’, ‘3’, ‘1’}
2.3 並集
一組集合的並集是這些集合的所有元素構成的集合,而不包含其他元素。使用操作符 | 執行並集操作,同樣地,也可使用方法 union() 完成。
a = set( '12345')
b = set('45678')
print(a|b)
print(a.union(b))
結果:
{‘8’, ‘7’, ‘3’, ‘5’, ‘2’, ‘1’, ‘4’, ‘6’}
{‘8’, ‘7’, ‘3’, ‘5’, ‘2’, ‘1’, ‘4’, ‘6’}
2.4對差集
兩個集合的對稱差是隻屬於其中一個集合,而不屬於另一個集合的元素組成的集合。使用 ^ 操作符執行差集操作,同樣地,也可使用方法 symmetric_difference() 完成。
a = set('12345')
b = set('45678')
print(a^b)
print(a.symmetric_difference(b))
結果:
{‘2’, ‘8’, ‘1’, ‘3’, ‘7’, ‘6’}
{‘2’, ‘8’, ‘1’, ‘3’, ‘7’, ‘6’}
3. 集合內建函式和方法
函式 | 描述 |
---|---|
all() | 內建函式:如果集合中的所有元素都是 True(或者集合為空),則返回 True。 |
any() | 內建函式:如果集合中的所有元素都是 True,則返回 True;如果集合為空,則返回 False。 |
enumerate() | 內建函式:返回一個列舉物件,其中包含了集合中所有元素的索引和值(配對)。 |
len() | 內建函式:返回集合的長度(元素個數) |
max() | 內建函式:返回集合中的最大項 |
min() | 內建函式:返回集合中的最小項 |
sorted() | 內建函式:從集合中的元素返回新的排序列表(不排序集合本身) |
sum() | 內建函式:返回集合的所有元素之和 |
add() | 向集合中新增元素 |
clear | 清空集合 |
pop | 刪除並返回任意的集合元素(如果集合為空,會引發 KeyError) |
remove | 刪除並返回任意的集合元素(如果集合為空,會引發 KeyError) |
intersection | 將兩個集合的交集作為一個新集合返回 |
union | 將集合的並集作為一個新集合返回 |
difference | 將兩個或多個集合的差集作為一個新集合返回 |
symmetric_difference | 將兩個集合的對稱差作為一個新集合返回(兩個集合合併刪除相同部分,其餘保留) |
update | 用自己和另一個的並集來更新這個集合 |
isdisjoint() | 如果兩個集合有一個空交集,返回 True |
issubset() | 如果另一個集合包含這個集合,返回 True |
issuperset() | 如果這個集合包含另一個集合,返回 True |