集合內置方法
集合的元素不能是列表、字典等可修改的元素;可以是數字、字符串、元組等可哈希的;集合是無序的。我們常用的都是可變集合。其實還有一種不可變集合(frozenset),只是我們很少用到。下面都說的是可變集合。
1. add(...)
Add an element to a set.
添加一個元素到集合中。假如集合中已經有了該元素,則看不出效果;因為集合是去重的;
例如:
set1={1,2,3,4,5}
set1.add(3)
print(set1) # 輸出set1,為 {1,2,3,4,5}
2. clear(...)
Remove all elements from this set.
清空集合的所有元素;
例如:
set1={1,2,3,4,5}
set1.clear()
print(set1) # 輸出set(), 表示集合set1被清空
3. copy(...)
Return a shallow copy of a set.
復制一個集合;
4. difference(...)
Return the difference of two or more sets as a new set.
求兩個集合的差集;返回一個集合,集合中的元素為當前集合 減去 指定集合;數學表達式為 -,如 a-b
例如:
set1={1,2,3,4,5,('wjz','wjk')}
set2={1,2,7,'wjk',('wjk','wjz')}
print(set1.difference(set2)) # 返回 {3, 4, 5, ('wjz', 'wjk')} 說明,集合中的元組有順序區分;
5. difference_update(...)
Remove all elements of another set from this set.
difference方法是取差,但是不改變兩個集合;difference_update方法是將差集合賦給原來的集合。
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk')}
set2={1,2,7,'wjk',('wjk','wjz')}
set1.difference_update(set2)
print(set1) # 輸出 {3, 4, 5, ('wjz', 'wjk')} set2不變
6. discard(...)
Remove an element from a set if it is a member. If the element is not a member, do nothing.
假如集合中有指定的元素,則從集合中移除該元素;如果沒有,則不進行任何操作;
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set1.discard('www')
print(set1) # 輸出 {1,2,3,4,5,('wjz','wjk')}
7. intersection(...)
Return the intersection of two sets as a new set.
求兩個集合的交集;返回一個集合,該集合是兩個集合的交集;數學表達式為 &,如 a & b
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk')}
set2={1,2,7,'wjk',('wjk','wjz')}
print(set1.intersection(set2)) #輸出 {'wjk', 1, 2}
8. intersection_update(...)
intersection方法是求兩個集合的交集,但是不改變原來的兩個集合;intersection_update方法是把交集賦給前面原來的集合;
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk')}
set2={1,2,7,'wjk',('wjk','wjz')}
set1.intersection_update(set2)
print(set1) # set2不變;輸出 {'wjk', 1, 2}
9. isdisjoint(...)
Return True if two sets have a null intersection.
如果兩個集合交集為空,則返回True;否則返回False
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk')}
set2={1,2,7,'wjk',('wjk','wjz')}
set3={8,9}
print(set1.isdisjoint(set2)) # 返回 False
print(set1.isdisjoint(set3)) # 返回 True
10. issubset(...)
Report whether another set contains this set.
判斷該集合是否為指定集合的子集;是則返回True,否則返回False;
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk'),}
set2={1,2}
print(set2.issubset(set1)) # 返回 True
11. issuperset(...)
Report whether this set contains another set.
判斷該集合是否為指定集合的父集;是則返回True,否則返回False;
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk'),}
set2={1,2}
print(set1.issuperset(set2)) # 返回 True
12. pop(...)
Remove and return an arbitrary set element. Raises KeyError if the set is empty.
從集合中刪除一個元素,並返回該元素;不能指定參數,隨機刪除(因為集合是無序的); 假如指定了參數 或者 集合為空,則報異常;
例如:
set1={1,2,3,4,5,'wjk',('wjz','wjk')}
print(set1.pop()) # 返回 一個元素;我這里是返回的2 此時set1變為 {1, 3, 4, 5, ('wjz', 'wjk'), 'wjk'}
13. remove(...)
Remove an element from a set; it must be a member.
從集合中刪除指定元素;假如集合中沒有這個元素,則報異常;
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set1.remove('www')
print(set1) # 輸出 {1, 2, 3, 4, 5, ('wjz', 'wjk')}
14. symmetric_difference(...)
返回一個集合,該集合為 兩個集合互為差集的合集;數學表達式是 ^ 。如 a^b
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set2={1,2,7,'www',('wjk','wjz')}
print(set1.symmetric_difference(set2)) # 輸出 {3, 4, 5, ('wjz', 'wjk'), 7, ('wjk', 'wjz')} ; 即 (set1 - set2)+(set2 - set1)
15. symmetricdifferenceupdate(...)
返回一個集合,該集合為 兩個集合互為差集的合集;並把該集合賦給前面的那個集合;
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set2={1,2,7,'www',('wjk','wjz')}
set1.symmetric_difference_update(set2)
print(set1) # 輸出 {3, 4, 5, 7, ('wjz', 'wjk'), ('wjk', 'wjz')} set2集合不變;
16. union(...)
求兩個集合的並集;返回一個集合,該集合是兩個集合的並集;數學表達式為 |,如 a|b
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set2={1,2,7,'www',('wjk','wjz')}
print(set1.union(set2)) # 輸出 {1, 2, 3, 4, 5, 7, ('wjk', 'wjz'), ('wjz', 'wjk'), 'www'}
17. update(...)
求兩個集合的並集,返回一個集合,該集合是兩個集合的並集;並把該集合賦給前面的集合;
其實第二個可以是集合、字符串、列表、元組、字典等等
例如:
set1={1,2,3,4,5,'www',('wjz','wjk')}
set2={1,2,7,'www',('wjk','wjz')}
set1.update(set2)
print(set1) # 輸出 {1, 2, 3, 4, 5, 'www', 7, ('wjz', 'wjk'), ('wjk', 'wjz')} set2不變
set3={1,'www',5}
print(set3.update('bashrunning')) # 輸出 {1,'www',5,'b','a','s','h','r','u','n',,'i','g'} 去重之后的。