集合(set)是一个无序,不重的数据组合,它主要有以下两个作用:
1.去重
2.关系测试
a = [1,1,2,'asd'] b=set(a) print(b)
结果:{1, 2, 'asd'}
集合对象是一组可哈希的值,也就是元素不可变,列表就不能作为其中的元素
a = [[1,1],2,'asd'] b=set(a) print(b)
结果:unhashable type: 'list'
集合本身也有两种分类:可变集合(set) 不可变集合(frozenset)(类似于元组)
forzenset可作为字典的键
a=[1,1,2] b=frozenset(a) c = {b:'z'} print(c[b])
1.创建集合:用关键字set()
a=set('asdfg') print(a)结果:{'f', 'd', 's', 'g', 'a'}
2.访问集合:因为集合是无序的,所以没法切片,或者用下标访问集合,只能通过for循环遍历集合,但是可以用
in和not in判断某个元素在不在集合里面
3.更新集合:
s.add() 一次只能添加一个元素,如果是字符串,会把它当成整体加入
s.updata() 一次只能添加一个元素,如果是字符串,会分成字符来看
s.remove() 一次删除一个指定元素
del 删除整个集合
4.集合类型操作符:(同数学中的集合)
(1)in 和 not in
(2)集合等价==和不等价!=
(3)子集和超集
(4)交并补差
集合的并集:
a = set([1,1,2,3,4]) b = set([4,5,6]) c = a|b print(c) print(a.union(b))
集合的交集:
a = set([1,1,2,3,4]) b = set([4,5,6]) c = a&b print(c) print(a.intersection(b))
差集:
a = set([1,1,2,3,4]) b = set([4,5,6]) c = a-b print(c) print(a.difference(b))
对称差集:
a = set([1,1,2,3,4]) b = set([4,5,6]) c = a^b print(c) print(a.symmetric_difference(b))
快速去重,可以先变集合,再变回列表