python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union(聯合),intersection(交), difference(差)和sysmmetric difference(對稱差集)等數**算,sets 支援 x in set, len(set),和 for x in set。作為乙個無序的集合,sets不記錄元素位置或者插入點。因此,sets不支援indexing,slicing,或其它類序列(sequence-like)的操作。
下面來點簡單的小例子說明吧。
>>
> x =
set(
'spam'
)>>
> y =
set(
['h'
,'a'
,'m'])
>>
> x, y
(set([
'a',
'p',
's',
'm']),
set(
['a'
,'h'
,'m'])
)
再來些小應用。
>>
> x & y # 交集
set(
['a'
,'m'])
>>
> x | y # 並集
set(
['a'
,'p'
,'s'
,'h'
,'m'])
>>
> x - y # 差集
set(
['p'
,'s'
])
去除列表裡重複元素,用hash來解決也行,只不過感覺在效能上不是很高,用set解決還是很不錯的,示例如下:
>>
> a =[11
,22,33
,44,11
,22]>>
> b =
set(a)
>>
> b
set([33
,11,44
,22])
>>
> c =
[i for i in b]
>>
> c[33
,11,44
,22]
集合用於包含一組無序的物件。要建立集合,可使用set()函式並像下面這樣提供一系列的項:
s =
set([3
,5,9
,10])
#建立乙個數值集合
t =set
("hello"
)#建立乙個唯一字元的集合
注:與列表和元組不同,集合是無序的,也無法通過數字進行索引。此外,集合中的元素不能重複。例如,如果檢查前面**中t集合的值,結果會是:
>>
> t
set(
['h'
,'e'
,'l'
,'o'
])
注意:只出現了乙個』l』。
集合支援一系列標準操作,包括並集、交集、差集和對稱差集,例如:
a = t | s # t 和 s的並集
b = t & s # t 和 s的交集
c = t – s # 求差集(項在t中,但不在s中)
d = t ^ s #對稱差集(項在t或s中,但不會同時出現在二者中)
基本操作:
(1),add()
使用add()可以新增一項:
t.add(
'x')
# 新增一項
s.update([10
,37,42
])# 在s中新增多項
注意:當在update中新增的是字串的話,字串會被自動拆分
(2),remove()
使用remove()可以刪除一項:
t.remove(
'h')
(3),len()
len
(s)#s的長度
(4),in
x in s #測試 x 是否是 s 的成員
(5),not in
x not in s
測試 x 是否不是 s 的成員
(6),<= 子集 和 >= 超集
s.issubset(t)
s <= t # 測試是否 s 中的每乙個元素都在 t 中
s.issuperset(t)
s >= t # 測試是否 t 中的每乙個元素都在 s 中
(7),| 並集
s.union(t)
s | t # 返回乙個新的 set 包含 s 和 t 中的每乙個元素
(8),& 交集
s.intersection(t)
s & t #返回乙個新的 set 包含 s 和 t 中的公共元素
(9),- 差集
s.difference(t)
s - t #返回乙個新的 set 包含 s 中有但是 t 中沒有的元素
(10),^ 對稱差
s.symmetric_difference(t)
s ^ t #返回乙個新的 set 包含 s 和 t 中不重複的元素
(11),copy()
s.copy(
)#返回 set 「s」的乙個淺複製
(12),frozenset
把乙個可變序列轉換成乙個不可變的物件,即可雜湊
運算子運算結果
hash
(s)#返回 s 的 hash 值
下面這個表列出了對於 set 可用二對於 immutableset 不可用的運算:
運算子(voperator)
等價於運算結果
s.update(t)
s |= t
返回增加了 set 「t」中元素後的 set 「s」
s.intersection_update(t)
s &= t
返回只保留含有 set 「t」中元素的 set 「s」
s.difference_update(t)
s -= t
返回刪除了 set 「t」中含有的元素後的 set 「s」
s.symmetric_difference_update(t)
s ^= t
返回含有 set 「t」或者 set 「s」中有而不是兩者都有的元素的 set 「s」
s.add(x)
向 set 「s」中增加元素 x
s.remove(x)
從 set 「s」中刪除元素 x, 如果不存在則引發 keyerror
s.discard(x)
如果在 set 「s」中存在元素 x, 則刪除
s.pop(
)刪除並且返回 set 「s」中的乙個不確定的元素, 如果為空則引發 keyerror
s.clear(
)刪除 set 「s」中的所有元素
請注意:非運算子版本的 update(), intersection_update(), difference_update()和symmetric_difference_update()將會接受任意 iterable 作為引數。從 2.3.1 版本做的更改:以前所有引數都必須是 sets。這個模組還包含乙個 union_update() 方法,它是 update() 方法的乙個別名。包含這個方法是為了向後相容。程式設計師們應該多使用 update() 方法,因為這個方法也被內建的 set() 和 frozenset() 型別支援。
為您推薦:
四種儲存結構
python集合set操作
python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.sets 支援 x in set,len set ...
python 集合set的操作
當列表中存在多個重複元素,待刪除時,set刪除高效而方便。集合的新增有兩種常用方法,分別是add和update。1.集合add方法 是把要傳入的元素做為乙個整個新增到集合中,例如 a set boy a.add python a set y python b o 2.集合update方法 是把要傳入...
python 的集合操作(set)
python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.set 可變集合 與frozenset 不可變集合...