基本数据类型---集合
认识集合
集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。
集合中的元素有三个特征:
1.确定性(元素必须可hash)
2.互异性(去重)
3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合。
注意:集合存在的意义就在于去重和关系运算
集合的主要作用:
1.去重,把一个列表变成集合,就自动去重了
2.关系测试,测试两组数据之间的交集、差集、并集等关系
用集合解决问题
l= {'张三','李四','老男孩'} #集合定义
p = {'张三','李四','alex'}
l_p = l&p #集合求交集
print(l_p)
集合的定义
>>> l = {1, 2, 3, 1} # 集合具有去重的作用
>>> l
{1, 2, 3}
>>> set_test = set('hello') # 集合具有无序性
>>> set_test
{'e', 'h', 'o', 'l'}
>>>
>>> f_set_test = frozenset(set_test) 改为不可变集合frozenset
>>> f_set_test
frozenset({'e', 'h', 'o', 'l'})
集合的常用方法
# 增加 >>> s = {1, 2, 3, 4, 5} >>> s.add(2) # 重复的值是无法增加的 >>> s {1, 2, 3, 4, 5} >>> s.add(6) >>> s {1, 2, 3, 4, 5, 6} >>> s.update([1,2,3,4,5,6]) # 增加多个值 >>> s {1, 2, 3, 4, 5, 6} # 删除 >>> s.pop() # 随机删除一个值 1 >>> s {2, 3, 4, 5, 6} >>> s.remove(6) # 指定删除一个值 >>> s {2, 3, 4, 5} >>> s.discard(6) # 和remove的区别是,不存在的值不会报错 >>> s.discard(5) >>> s {2, 3, 4} >>> s.clear() # 清空 >>> s set() >>>
集合的关系测试
关系测试分为,交集、并集、差集
交集
>>> l= {'张三','李四','老男孩'}
>>> p = {'张三','李四','alex'}
>>> print(l.intersection(p))
{'李四', '张三'}
# 或
>>> print(l&p)
{'李四', '张三'}
差集
>>> l= {'张三','李四','老男孩'}
>>> p = {'张三','李四','alex'}
>>> l.difference(p)
{'老男孩'}
# 或
>>> l-p
{'老男孩'}
>>> p.difference(l)
{'alex'}
>>> p-l
{'alex'}
并集
>>> l.union(p) {'张三', '老男孩', 'alex', '李四'} # 或 >>> l | p {'张三', '老男孩', 'alex', '李四'}
对称差集,求不交集的部分
>>> s = {1,2,3,4}
>>> s2 = {2,3,5,6}
>>> s.symmetric_difference(s2)
{1, 4, 5, 6}
子集和超集
>>> s {1, 2, 3, 4} >>> s2 {1, 2, 3, 4, 5, 6} >>> s.issubset(s2) # s是否为s2的子集 True # 或 >>> s < s2 True >>> s.issuperset(s2) # s是否为s2的超集 False # 或 >>> s > s2 False
包含关系
in,not in: 判断某元素是否在集合内 ==,!=:判断两个集合是否相等 两个集合之间一般有三种关系,相交、包含、不相交。在python中分别用下面的方法判断: set.isdisjoint(s):判断两个集合是不是不相交 set.issuperset(s):判断集合是不是包含其他集合,等同于a>=b set.issubset(s):判断集合是不是被其他集合包含,等同于a<=b


浙公网安备 33010602011771号