集合(set)-Python3,集合set-python3
set 的 remove() 和 discard() 方法介紹。
函數/方法名
| |
等價操作符 |
說明 |
| 所有集合類型 |
| len(s) |
|
集合基數:集合s中元素個數 |
| set([obj]) |
|
可變集合工廠函數:ojb必須是支援迭代的,由obj中的元素建立集合,否則建立一個空集合 |
| frozenset([obj]) |
|
不可變集合工廠函數:執行方式好set()方法相同,但它返回的是不可變集合 |
| |
obj in s |
成員測試 |
| |
obj not in s |
非成員測試 |
| |
s == t |
等價測試 |
| |
s != t |
不等價測試 |
| |
s < t |
(嚴格意義上)子集測試 |
| s.issubset(t) |
s <= t |
子集測試 |
| |
s > t |
(嚴格意義上)超集測試 |
| s.issuperset(t) |
s >= t |
超集測試 |
| s.union(t) |
s | t |
合併作業 |
| s.intersec-tion(t) |
s & t |
交集操作 |
| s.difference(t) |
s – t |
差分操作 |
| s.symmetric_fifference(t) |
s ^ t |
對稱差分操作 |
| s.copy() |
|
賦值操作:返回s的(淺複製)副本 |
| 僅適用於可變集合 |
| s.update(t) |
s |= t |
(Union)修改操作:將t中的成員添加s |
| s.intersection_update(t) |
s &= t |
交集修改操作:s中僅包括s和t中共有的成員 |
| s.difference_update(t) |
s -= t |
差修改操作:s中僅包括屬於s但不屬於t的成員 |
| s.symmetric_difference_ update(t) |
s ^= t |
對稱差分修改操作:s中包括僅屬於s或僅屬於t的成員 |
| s.add(obj) |
|
加操作:將obj添加到s |
| s.remove(obj) |
|
刪除操作 |
| s.discard(obj) |
|
丟棄操作:remove()的友好版本,如果s中存在ojb,從s中刪除它 |
| s.pop() |
|
Pop操作:移除並返回s中的任意一個值 |
| s.clear() |
|
清除操作:移除s中的所有元素 |
for example:
以下運行代碼會報錯,原因在於 第9行 remove()中的‘l’在集合中不存在
而 discard()方法不會報錯。
1 # Code based on Python 3.x 2 # _*_ coding: utf-8 _*_ 3 # __Author: "LEMON" 4 5 names = ['lemon','zw','lr', 'lr'] 6 names_set = set(names) 7 8 names_set.discard('lemo') 9 names_set.remove('l')10 # Error: 'lr' is not in names_set11 print(names_set)
正確的代碼如下:
1 # Code based on Python 3.x 2 # _*_ coding: utf-8 _*_ 3 # __Author: "LEMON" 4 5 names = ['lemon','zw','lr', 'lr'] 6 names_set = set(names) 7 8 names_set.discard('lemo') 9 names_set.remove('lr')10 # Error: 'lr' is not in names_set11 print(names_set)
運行結果如下:
1 {'lemon', 'zw'}