集合
Python 還包含了一個數據類型 —— set (集合)。集合是一個無序不重複元素的集。基本功能包括關係測試和消除重複元素。集合對象還支持 union(聯合),intersection(交),difference(差)和 sysmmetric difference(對稱差集)等數學運算。集合用大括號表示。
集合的創建
1.set() 函數可以用來創建集合
x = set('spam')
y = set(['h','a','m'])
x, y#用逗號隔開的變量屬於元組
##(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))
s1=set([1,2,3,4])
s1
#{1, 2, 3, 4}
s3=set({'a':2,'b':3,'c':4})
s3
#{'c', 'a', 'b'}
set集合類需要的參數必須是迭代器類型的,如:序列、字典等,然後轉換成無序不重複的元素集。由於集合是不重複的,所以可以對字符串、列表、元組進行去重操作。
2.大括號也可以創建集合
想要創建空集合,你必須使用 set() 而不是 {}。後者用於創建空字典,我們在後面介紹的一種數據結構。
集合的操作
集合添加
集合的添加有兩種方式,分別是add和update。但是它們在添加元素時是由區別的:
- add()方法
把要傳入的元素作爲一個整體添加到集合中,如:
s=set('one')
s
#{'e', 'o', 'n'}
s.add('two')
s
#{'e', 'two', 'o', 'n'}
- update()方法
是把要傳入的元素拆分成單個字符,存於集合中,並去掉重複的字符。可以一次添加多個值,如:
s=set('one')
s
{'e', 'o', 'n'}
s.update('two')
s
{'e', 'n', 't', 'w', 'o'}
集合刪除
集合的刪除操作使用的方法跟列表是一樣的,使用的也是remove方法。如:
- setVar.remove(element)
setVar :爲一個set類型的變量
element :表示要查找並刪除的元素
函數作用:
在集合setVar中查找element元素,如果存在則刪除;如果沒找到,則報錯。
s=set('one')
s
{'e', 'o', 'n'}
s.remove('e')
s
{'n', 'o'}
- setVar.discard(element)
setVar :爲一個set類型的變量
element :表示要查找並刪除的元素
函數作用:
在集合setVar中查找element元素,如果存在則刪除;如果沒找到,則什麼也不做
sList
set([1, 2, 3, 4, 5])
sList.discard(1)
sList
set([2, 3, 4, 5])
- s.pop()
s:爲set類型的變量
函數作用:
刪除並返回set類型的s中的一個不確定的元素,如果爲空引發KeyError錯誤。
sList
set([2, 3, 4, 5])
sList.pop()
2
- s.clear()
s:set類型的變量
函數作用:
清空s集合中的所有元素
List
set([3, 4, 5])
sList.clear()
sList
set([])
集合的遍歷
集合的遍歷跟序列的遍歷方法完全一樣。
s=set('one')
s
{'e', 'o', 'n'}
for i in s:
print(i)
e
o
n
另外一種遍歷(變量idex表示集合中元素i的索引。)
s=set('one')
s
{'e', 'o', 'n'}
for idex,i in enumerate(s):
print (idex,i)
0 e
1 o
2 n
集合函數的補充
函數 說明
len(s) set 的長度
x in s 測試 x 是否是 s 的成員
x not in s 測試 x 是否不是 s 的成員
s.issubset(t) 測試是否 s 中的每一個元素都在 t 中
s.issuperset(t) 測試是否 t 中的每一個元素都在 s 中
s.union(t) 返回一個新的 set 包含 s 和 t 中的每一個元素
s.intersection(t) 返回一個新的 set 包含 s 和 t 中的公共元素
s.difference(t) 返回一個新的 set 包含 s 中有但是 t 中沒有的元素
s.symmetric_difference(t) 返回一個新的 set 包含 s 和 t 中不重複的元素
s.copy() 返回 set “s”的一個淺複製