集合是一个无序的,不重复的数据组合,它的主要作用如下
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
1、创建集合
s = set([3,5,9,10]) #创建一个数值集合
t = set("Hello") #创建一个唯一字符的集合
#集合去重,集合是无序的
list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)
print(list_1)
{1, 3, 4, 5, 6, 7, 9}
list_2 =set([2,6,0,66,22,8,4])
print(list_2)
{0, 2, 66, 4, 6, 8, 22}
2、交集
>>> list_1.intersection(list_2)
{4, 6}
3、并集
>>> list_1.union(list_2)
{0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}
4、差集
#差集 in list_1 but not in list_2
# list1 有 但是 list2 没有
>>> list_1.difference(list_2)
{1, 3, 5, 7, 9}
# list2 有 但是 list1 没有
>>> list_2.difference(list_1)
{0, 2, 66, 8, 22}
5、判断子父集
#子集
>>> list_1
{1, 3, 4, 5, 6, 7, 9}
>>> list_2
{0, 2, 66, 4, 6, 8, 22}
>>> list_3 = set([1,3,7])
#判断list1 是不是 list2 的 子集
>>> list_1.issubset(list_2)
False
#判断list1 是不是 list2 的 父级
>>> list_1.issuperset(list_2)
False
#判断list3 是不是 list1 的 子集
>>> list_3.issubset(list_1)
True
#判断list1 是不是 list3 的 父级
>>> list_1.issuperset(list_3)
True
6、对称差集
#对称差集
>>> list_1.symmetric_difference(list_2)
{0, 1, 2, 66, 3, 5, 8, 7, 9, 22}
7、判断有无交集
>>> list_3 = set([1,3,7])
>>> list_4 = set([5,6,7,8])
>>> list_5 = set([5,6,8])
#有交集 返回false
>>> list_3.isdisjoint(list_4)
False
#没有交集返回true
>>> list_3.isdisjoint(list_5)
True
8、使用符号表示
#交集
>>> list_1 & list_2
{4, 6}
#union
>>> list_2 | list_1
{0, 1, 2, 66, 4, 3, 6, 5, 8, 7, 9, 22}
#difference
# in list 1 but not in list 2
>>> list_1 - list_2
{1, 3, 5, 7, 9}
#对称差集
>>> list_1 ^ list_2
{0, 1, 2, 66, 3, 5, 8, 7, 9, 22}
9、添加元素
#添加一个
>>> list_1.add(999)
{1, 3, 4, 5, 6, 7, 999, 9}
#添加多个
>>> list_1.update([888,777,555])
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555, 888}
10、删除集合元素
#删除
list_1.remove(888)
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}
11、打印集合长度
>>> list_1
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}
#打印set的长度
>>> len(list_1)
10
12、pop 删除
>>> list_1
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}
#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
>>> list_1.pop()
1
>>> list_1
{ 3, 4, 5, 6, 7, 999, 9, 777, 555}
13、discard 删除
#discard 删除没有的不会报错,remove 删除没有的 会报错
>>> list_1
{4, 5, 6, 7, 999, 9, 777, 555}
>>> list_1.discard(555)
>>> list_1
{4, 5, 6, 7, 999, 9, 777}