集合
去重
关系测试, 交集、差集、并集、反向(对称)差集
集合是无序的
把列表变为集合,去重
1 list_1 = [1, 4, 5, 7, 3, 6, 7, 9] 2 list_1 = set(list_1) # 把列表变为集合,去重 3 4 print(list_1, type(list_1))
交集、并集、差集
1 list_1 = set([1, 4, 5, 5, 7, 9, 11, 13, 15, 15]) 2 list_2 = set([2, 4, 5, 5, 8, 10, 12, 14]) 3 4 print(list_1, list_2) 5 print(list_1.intersection(list_2)) # 交集, 相交再去重 6 print(list_1.union(list_2)) # 并集, 相并再去重 7 print(list_1.difference(list_2)) # 差集, list_1有,list_2没有,再去重
子集、父集
1 list_1 = set([1, 2, 3, 4, 5]) 2 list_2 = set([1, 2]) 3 4 print(list_1.issubset(list_2)) # 是否为子集 False 5 print(list_1.issuperset(list_2)) # 是否为父集 True
对称差集
1 list_1 = set([1, 2, 3, 4, 5]) 2 list_2 = set([1, 2, 6, 7, 8]) 3 4 print(list_1.symmetric_difference(list_2)) # 对称差集,互相都没有的 5 print(list_1.difference(list_2)) # 差集,我有你没有的
isdisjoint
1 list_1 = set([3, 4, 5]) 2 list_2 = set([6, 7, 8]) 3 4 print(list_2.isdisjoint(list_1)) # 如果之间没有交集,返回为True
用运算符表示关系测试
1 list_1 = set([1, 2, 3, 4, 5]) 2 list_2 = set([1, 2, 6, 7, 8]) 3 4 print(list_1 & list_2) # 交集 {1, 2} 5 print(list_1 | list_2) # 并集 {1, 2, 3, 4, 5, 6, 7, 8} 6 print(list_1 - list_2) # 差集 {3, 4, 5} 7 print(list_1 ^ list_2) # 对称差集 {3, 4, 5, 6, 7, 8}
集合的曾删改查及其他
1 list_1 = set([1, 2, 3, 4, 5]) 2 3 list_1.add(999) # 添加一项 4 list_1.update([7777, 888, 666]) # 添加多项 5 list_1.remove(3) # 删除一项 6 7 print(list_1) 8 9 print(len(list_1)) # set的长度 10 print(888 in list_1) # 测试888是否是list_1的成员 11 print(888 not in list_1) # 测试888是否不是list_1的成员 12 print(list_1.pop()) # 随机删除一项,并返回其值 13 list_1.discard('ddd') #remove删除不存在的项会报错,discard不会报错