集合是一个无序的、不重复的数据组合,主要作用如下:
1.去重:把一个列表变成集合,就自动去重了
list1 = [1, 3, 4, 5, 7, 6, 9, 7, 4]
list1 = set(list) # 利用集合set去重
print('去重:', list1)
输出:
去重: {1, 3, 4, 5, 6, 7, 9}
2.关系测试:测试两组数据之间的交集、并集、差集等关系
list2 = set([22, 6, 66, 88, 4])
list3 = set([1, 3, 5])
print('交集:', list1.intersection(list2))
print('并集:', list1.union(list2))
print('1和2的差集:', list1.difference(list2))
print('2和1的差集:', list2.difference(list1))
print('2是否为1的子集:', list1.issubset(list2))
print('2是否为1的父集:', list1.issuperset(list2))
print('对称差集:', list1.symmetric_difference(list2)) # 去掉1和2中相同的元素
print('判断两个集合有无交集,无则返回true:', list2.isdisjoint(list3))
print('------运算符表达方式-------')
print('交集:', list1 & list2)
print('并集:', list1 | list2)
print('1和2的差集:', list1 - list2)
print('2和1的差集:', list2 - list1)
print('对称差集:', list1 ^ list2)
输出:
交集: {4, 6}
并集: {1, 66, 3, 4, 5, 6, 7, 9, 22, 88}
1和2的差集: {1, 3, 5, 7, 9}
2和1的差集: {88, 66, 22}
2是否为1的子集: False
2是否为1的父集: False
对称差集: {1, 66, 3, 5, 7, 9, 22, 88}
判断两个集合有无交集,无则返回true: True
------运算符表达方式-------
交集: {4, 6}
并集: {1, 66, 3, 4, 5, 6, 7, 9, 22, 88}
1和2的差集: {1, 3, 5, 7, 9}
2和1的差集: {88, 66, 22}
对称差集: {1, 66, 3, 5, 7, 9, 22, 88}
3.集合的增删改查
list1.add(999)
print('增加一项:', list1)
list1.update([777, 888, 111])
print('增加多项:', list1)
list1.remove(999)
print('删除一项:', list1)
print(list1.pop()) # 随机删除一项
print(888 in list1) # 判断某元素是否在集合中
list1.discard('ddd') # discard删除不存在集合中的元素不会报错,remove会报错
print(list1)
输出:
增加一项: {1, 3, 4, 5, 6, 7, 999, 9}
增加多项: {1, 3, 4, 5, 6, 7, 999, 9, 777, 111, 888}
删除一项: {1, 3, 4, 5, 6, 7, 9, 777, 111, 888}
1
True
{3, 4, 5, 6, 7, 9, 777, 111, 888}