集合三要素
无序
去重(必须是不同元素)
元素可hash(必须是不可变类型:数字,字符串,元组)
集合基本操作
其他数据类型转换为集合(会自动去重)
s = set('hello') print(s) s = set(['aa', 'bb', 'cc','aa']) print(s)
结果:{'l', 'e', 'o', 'h'}
{'aa', 'bb', 'cc'}
添加元素set.add(一个元素,已经有的元素无法添加,但不报错)
s={1,2,3,4,5,6} s.add('3') print(s) s.add(3) print(s)
结果:{1, 2, 3, 4, 5, 6, '3'}
{1, 2, 3, 4, 5, 6, '3'}
添加元素set.update(多个元素,参数只要是可迭代类型)
s2={1,2,3} s2.update([1,3,5,7]) print(s2)
结果:{1, 2, 3, 5, 7}
删除元素:三种不同的方式
①随机删除 set.pop()
②指定元素删除,不存在会报错 set.remove('hello')
③指定元素删除,不存在不会报错 set.discard('hello')
④清空集合 set.clear(),有别于删除集合
集合关系运算
求交集 : s1.intersection(s2)或s1&s2
求并集 : s1.union(s2)或s1|s2
求差集 : s1.difference(s2)或s1-s2(s1有的而s2没有)
求交叉补集 : s1.symmetric_difference(s2)或s1^s2(并集 - 交集)
s1.isdisjoint(s2):s1和s2是不是没有交集,是的话返回False
s1={1,2} s2={2,3,5} print(s1.isdisjoint(s2))
结果:False
s1.issubset(s2) : s1是不是s2的子集,是的话返回Ture
s1={1,2} s2={1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1))
结果:True False
s1.issuperset(s2) : s1是不是s2的父集,是的话返回Ture
list利用集合去重
li = ['aa','bb','cc','bb'] li = list(set(li)) print(li)
结果:['aa', 'bb', 'cc']
总结:
集合是一个无序的,不重复的数据组合,它有两个主要的用途:
1.去重,把一个列表变成集合,就自动去重了
2.关系测试,测试两组数据之间的交集、差集、并集等关系