常用数据结构--集合
程序员文章站
2022-07-08 15:51:15
集合是一组用 “{” 和 “}” 括起来的无序不重复元素,元素之间用逗号分隔,元素...
集合是一组用 “{” 和 “}” 括起来的无序不重复元素,元素之间用逗号分隔。
集合的创建
1.用大括号将多个元素括起来,元素间用逗号分隔
>>> s = {'a','b','c','d'}
>>> s
{'a', 'b', 'c', 'd'}
2.用函数 set() ,可将字符串、列表、元组等类型的数据转换为集合类型
>>> s = set(['a','b','c','d'])
>>> s
{'a', 'b', 'c', 'd'}
>>> type(s)
<class 'set'>
>>> a = set()
>>> a
set()
>>> type(a)
<class 'set'>
注:空集合只能用 set() 来创建,{} 用于表示空字典
集合的运算
1.len() 返回集合中元素的个数
>>> s = {'a','b','c','d'}
>>> len(s)
4
2. in 判断元素是否存在于集合之中,结果返回布尔值
>>> s = {'a','b','c','d'}
>>> 'b' in s
True
>>> 1 in s
False
3.并集、交集
并集:创建新集合,包含两个集合中的所有元素
交集:创建新集合,包含两个集合中的公共部分
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1 | s2 #并集
{'a', 'f', 'e', 'd', 'b', 'c'}
>>> s1 & s2 #交集
{'d'}
4.差集
出现在集合A但不出现在集合B中的元素所构成的集合
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1-s2
{'a', 'b', 'c'}
>>> s2-s1
{'f', 'e'}
5.对称差
返回两个集合中不重叠的元素所构成的集合
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1 ^ s2
{'b', 'a', 'f', 'e', 'c'}
6.子集和超集
子集:集合A中的元素都属于集合B,A是B的子集
超集:集合A是B的子集,B是A的超集
- A <= B 检测A是否是B的子集
- A < B 检测A是否是B的真子集
- A >= B 检测A是否是B的超集
- A > B 检测A是否是B的真超集
- A |= B 将B的元素并入A中
>>> s1 = {'a', 'f', 'e', 'd', 'b', 'c'}
>>> s2 = {'a','b','c'}
>>> s2<s1
True
>>> s2>s1
False
>>> s2|=s1
>>> s1
{'d', 'b', 'a', 'f', 'e', 'c'}
集合的方法
python中以面向对象方式实现集合类型的运算
1.union()、intersection()
union() 方法相当于并集运算,intersection() 方法相当于交集运算
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1.union(s2)
{'a', 'f', 'e', 'd', 'b', 'c'}
>>> s1.intersection(s2)
{'d'}
2.update() 相当于合并运算
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1.update(s2)
>>> s1
{'a', 'f', 'e', 'd', 'b', 'c'}
3.difference() 相当于差集运算
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1.difference(s2)
{'a', 'b', 'c'}
>>> s2.difference(s1)
{'f', 'e'}
4.symmetric_difference() 相当于对称差运算
>>> s1 = {'a','b','c','d'}
>>> s2 = {'d','e','f'}
>>> s1.symmetric_difference(s2)
{'b', 'a', 'f', 'e', 'c'}
5.issubset() 用于判断是否子集, issuperset() 用于判断是否超集
>>> s1 = {'a','b','c','d','e','f'}
>>> s2 = {'d','e','f'}
>>> s1.issubset(s2)
False
>>> s2.issubset(s1)
True
>>> s1.issuperset(s2)
True
>>> s2.issuperset(s1)
False
6.add() 向集合中添加元素
>>> s = {'a','b','c','d'}
>>>> s.add('e')
>>> s
{'d', 'b', 'a', 'e', 'c'}
7.remove() 从集合中删除元素
>>> s = {'a','b','c','d','e','f'}
>>>> s.remove('f')
>>> s
{'d', 'b', 'a', 'e', 'c'}
>>> s.remove(1)
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
s.remove(1)
KeyError: 1
注:集合中没有该元素则报错
8.discard() 从集合中删除元素
>>> s = {'a','b','c','d','e','f'}
>>> s.discard('f')
>>> s
{'d', 'b', 'a', 'e', 'c'}
>>> s.discard(1)
>>>
注:集合中没有该元素也不报错
本文地址:https://blog.csdn.net/forever_728/article/details/110840700