day2-集合

一 概述

集合是无序的,天生不重复的数据组合

集合的特性:

  • 去重,把一个列表变成一个集合,就在动去重了
  • 关系测试,测试两组数据之间的交集,并集,差集,对称查集等

二 语法

>>> list_1 = ['1','2','3','4']
>>> s = set(list_1)  #把列表转换为集合
>>> s
{'4', '3', '1', '2'}
>>> t = set(['4','5','6']) #把列表转换为集合

三 关系测试

1. 交集 intersection() 和 &

>>> s
{'8', '1', '10', '11', '3', '7', '4', '9', '2'}
>>> t
{'3', '6', '5', '4'}
>>> s.intersection(t) 
{'3', '4'}
>>> a = s & t   #特殊符号&
>>> a
{'3', '4'}

2. 并集 union() 和  |

>>> s
{'8', '1', '10', '11', '3', '7', '4', '9', '2'}
>>> t
{'3', '6', '5', '4'}
>>> s.union(t)
{'8', '10', '3', '7', '1', '4', '9', '2', '5', '6', '11'}
>>> b = s | t  #特殊符号 |
>>> b
{'8', '10', '3', '7', '1', '4', '9', '2', '5', '6', '11'}

3. 差集 difference() 和 -

>>> s
{'8', '1', '10', '11', '3', '7', '4', '9', '2'}
>>> t
{'3', '6', '5', '4'}
>>> c = s - t  # 特殊符号 - ;返回一个新的set,在第一个s集合中,但不在t集合中
>>> c
{'8', '10', '7', '1', '9', '2', '11'}
>>> s.difference(t)  #返回一个新的set, 在第一个s集合中,但不在t集合中
{'8', '10', '7', '1', '9', '2', '11'}

4. 对称差集 symmetric_difference()  和 ^

>>> s
{'8', '1', '10', '11', '3', '7', '4', '9', '2'}
>>> t
{'3', '6', '5', '4'}
>>> s.symmetric_difference(t)  #返回一个新的set , 包含s 和 t 中不重复的元素
{'8', '10', '7', '5', '9', '1', '2', '6', '11'}
>>> d = s ^ t  #特殊符号 ^
>>> d
{'8', '10', '7', '5', '9', '1', '2', '6', '11'}

5. issubset() 和 <=

判断一个集合是否是另一个集合的子集

>>> s_1 = set(['1','2','3','4'])
>>> t_1 = set(['1','2'])
>>> t_1.issubset(s_1) #测试是否t_1中的每一个元素都在s_1中
True
>>> t_1 <= s_1
True
>>> 

6. issuperset() 和 >=

判断一个集合是否是另一个集合的父集

>>> s_1 = set(['1','2','3','4'])
>>> t_1 = set(['1','2'])
>>> t_1.issuperset(s_1) #测试是否 s_1中的每个元素都在t_1中
False
>>> t_1 >= s_1
False

7.isdisjoint()

判断两个集合是否有交集,没有交集,则返回True

>>> s_1 = set(['1','2','3','4'])
>>> t_1 = set(['1','2'])
>>> u_1 = set([7,8])
>>> s_1.isdisjoint(t_1)
False
>>> s_1.isdisjoint(u_1)
True
>>> t_1.isdisjoint(u_1)
True

 

四 基本操作

>>> s = ['1','2','3']
>>> s = set(s)
>>> s
{'3', '1', '2'}
>>> s.add('4')  #添加新值
>>> s
{'4', '3', '1', '2'}
>>> s.update(['5','6','7'])  #在s中添加多项
>>> s
{'3', '7', '4', '5', '1', '6', '2'}
>>> s.remove('1')  #使用remove可以删除一项,
>>> s.remove('10')  #使用remove可以删除一项,删除不存在的值会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '10'
>>> s
{'3', '7', '4', '5', '6', '2'}
>>> s.pop()  #随机删除一个值,并打印
'3'
>>> s
{'7', '4', '5', '6', '2'}
>>> s.discard('2')  #删除一个值,删除不存在的值,不会报错
>>> s
{'7', '4', '5', '6'}
>>> s.discard('18') #删除一个值,删除不存在的值,不会报错
>>> s
{'7', '4', '5', '6'}
>>> len(s)  #返回字典的长度
4
>>> '4' in s  #测试4是否是s的 成员 ,是则返回True
True
>>> '4' not in s  #测试4是否不是s的成员
False
>>> '12' not in s
True
>>> 

 

posted @ 2017-12-28 18:12  Easonlou  阅读(153)  评论(0编辑  收藏  举报