集合的使用

 优先级 : ()  not >and> or  从左至右依次计算。

and  且  前后都是真的 

or  或  有一个为真 就为真

not 非  取反             同等优先条件下 从左至右依次运算  

x  and   y  如果x为真  则值为y   否则为 x 

 

----------------------------------------------------------------------

集合的使用

集合是无序的,不重复的数据集合,他里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的,以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了
关系测试,测试量组数据之间的交集、差集、并集等关系

一、集合的创建

set1 = set({1,2,'barry'})
set1 = {'1','alex',2,True}
set2 = {'1','alex',2,True,[1,2,3]}  # 报错
set3 = {'1','alex',2,True,(1,2,[1,2,3])}  # 报错

二、去重

l = [1,1,2,2,3,4,5,5]
set1 = set(l)
print(set1)
l = list(set1)
print(l)

三、集合的增

复制代码
# add
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('景女神')
print(set1)

# update迭代增加
set1 = {'alex','wusir','ritian','egon','barry'}
set1.update('A')
print(set1)
set1.update('老师')
print(set1)
set1.update([1,2,3])
print(set1)
复制代码

四、集合的删

复制代码
set1 = {'alex','wusir','ritian','egon','barry'}
set1.remove('alex')  # 删除一个元素
print(set1)
set1.pop()  # 随机删除一个元素,返回被删除的元素
print(set1)
set1.clear()  # 清空集合
print(set1)
del set1  # 删除集合
print(set1)
复制代码

五、集合的查

使用for循环查找

六、集合的其它操作

复制代码
# 交集 & 或者 intersection
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)  # {4, 5}
print(set1.intersection(set2))  # {4, 5}

#  并集 | 或者 union
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}
print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}

# 差集 - 或者 difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)  # {1, 2, 3} set1独有的
print(set1.difference(set2))  # {1, 2, 3}
print(set2 - set1)  # {6,7,8}

# 反交集 ^ 或者 symmetric_difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

# 子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

# frozenset不可变集合
s = frozenset('barry')
print(s,type(s))
posted @ 2017-10-20 15:07  邯城吴彦祖  阅读(226)  评论(0编辑  收藏  举报