认识集合
集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。
集合中的元素有三个特征:
1.确定性(元素必须可hash)
2.互异性(去重)
3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合。
注意:集合存在的意义就在于去重和关系运算
>>> s = {1,2,3,2,4,5}#创建集合
>>> s
{1, 2, 3, 4, 5}#只有一个2
>>> s.add(2)#添加重复的2也加不进去
>>> s
{1, 2, 3, 4, 5}
>>> s.add(44)
>>> s
{1, 2, 3, 4, 5, 44}
>>> s.update([2,3,4,5,5,99])#把多个值加入到集合
>>> s
{1, 2, 3, 4, 5, 99, 44}
>>> s.discard(1)#删除元素,没有也不报错
>>> s
{2, 3, 4, 5, 99, 44}
>>> s.pop()#随便删除一个元素,集合为空的话会报错
2
>>> s.pop()
3
>>> s
{4, 5, 99, 44}
>>> s.clear()#清空
>>> s
set()
>>> s.add(1)
>>> s.copy()
{1}
>>> s.add([1,2,3])#只能添加不可变数据
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
交集
iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}
>>> iphone7.intersection(iphone9)
{'alex', 'jack'}
>>> iphone7&iphone9
{'alex', 'jack'}
差集
iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}
>>> iphone7.difference(iphone9)
{'rain', 'old_driver'}
>>> iphone7-iphone9
{'rain', 'old_driver'}
>>> iphone9.difference(iphone7)
{'old_boy', 'shanshan'}
>>> iphone9-iphone7
{'old_boy', 'shanshan'}
并集
iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}
>>> iphone9.union(iphone7)
{'shanshan', 'old_boy', 'rain', 'jack', 'alex', 'old_driver'}
>>> iphone9|iphone7
{'shanshan', 'old_boy', 'rain', 'jack', 'alex', 'old_driver'}
对称差集
iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}
>>> iphone9.symmetric_difference(iphone7)
{'shanshan', 'rain', 'old_boy', 'old_driver'}
>>> iphone9^iphone7
{'shanshan', 'rain', 'old_boy', 'old_driver'}
包含关系
in not in :判断某元素是否在集合内 == != :判断两个集合是否相等
两个集合之间一般有三个关系,相交、包含、不相交。在Python中分别用下面方法判断
set.isdisjiont(s):判断两个集合是不是相交
set.issuperset(s):判断集合是不是包含其他集合,等同于a>=b
set.issubset(s):判断集合是不是被其他集合包含,等同于a<=b