集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),
但是集合本身是不可哈希的(所以集合做不了字典的键)的。 以下是集合最重要的两点: (1)去重,把一个列表变成集合,就自动去重了。 (2)关系测试,测试两组数据之间的交集,差集,并集等关系。1. 集合的创建
set1 = set({1, 2, "barry"})set2 = {1, 2, "barry"}print(set1, set2)
执行结果为:
{'barry', 1, 2} {'barry', 1, 2}
2. 集合的增
2.1 add()
set1 = {"a", "b", "c"}set1.add("d")print(set1)
执行结果为:
{'b', 'a', 'd', 'c'}
2.1 update()
update():迭代着增加
set1 = {"a", "b", "c"}set1.update("A")print(set1)set1.update("B")print(set1)set1.update([1, 2, 3])print(set1)
执行结果为:
{'c', 'b', 'A', 'a'}{'A', 'a', 'B', 'c', 'b'}{1, 2, 3, 'A', 'a', 'B', 'c', 'b'}
3. 集合的删
set1 = {"a", "b", "c", "d", "e"}set1.remove("a") #删除一个元素print(set1)set1.pop() #随机删除一个元素print(set1)set1.clear() #清空集合print(set1)del set1 #删除集合print(set1)
4. 集合的其他操作
4.1 交集(& 或者 intersection)
set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}print(set1 & set2) #{4, 5}print(set1.intersection(set2)) #{4, 5}
4.2 并集(| 或者 union)
set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8}print(set2.union(set1)) #{1, 2, 3, 4, 5, 6, 7, 8}
4.3 差集(- 或者 differene)
set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}print(set1 - set2) #{1, 2, 3}print(set1.difference(set2)) #{1, 2, 3}
4.4 反交集(^ 或者 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}
4.5 子集与超集
set1 = {1, 2, 3}set2 = {1, 2, 3, 4, 5, 6}print(set1 < set2) #Trueprint(set1.issubset(set2)) #True#这两个相同,都是说明set1是set2子集print(set2 > set1) #Trueprint(set2.issuperset(set1))#True#这两个相同,都是说明set2是set1超集
5. frozenset不可变集合,让集合变成不可变类型
s = frozenset("barry")print(s, type(s))
执行结果为:
frozenset({'b', 'a', 'r', 'y'})