基本数据类型---集合

认识集合

集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。

集合中的元素有三个特征:

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
posted @ 2018-06-10 23:49  以后、  阅读(284)  评论(0)    收藏  举报