集合内置方法
集合的元素不能是列表、字典等可修改的元素;可以是数字、字符串、元组等可哈希的;集合是无序的。我们常用的都是可变集合。其实还有一种不可变集合(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'} 去重之后的。