Python:基础数据类型--集合
基础数据类型--集合
集合是一组无序数据组合,集合的元素是唯一的。一个{ }里面放一些元素就构成了一个集合,set里面可以是多种数据类型(但不能是列表,集合,字典,可以是元组)。
s={"oldboy","alex","jinxin"} print(s,type(s))
{'jinxin', 'alex', 'oldboy'} <class 'set'>
主要的作用为:
- 去重:把一个列表变成集合,就自动去重。
- 关系测试:测试两组数据之前的交集、差集、并集、对称差集等关系。
集合:增
s={"oldboy","alex","jinxin"} print(s,type(s)) s.add("laowan") #add()向集合中添加一个元素 print(s)
{'oldboy', 'jinxin', 'alex'} <class 'set'>
{'oldboy', 'jinxin', 'laowan', 'alex'}
s={"oldboy","alex","jinxin"} s.update(["bobo","gugu","xiaoxiao"]) #update()向集合中添加多个元素 print(s) {'jinxin', 'gugu', 'alex', 'oldboy', 'xiaoxiao', 'bobo'}
集合:删
pop() 随机删除集合中的一个元素,并返回删除的元素,并返回被删除的元素。
s={"oldboy","alex","jinxin"} result = s.pop() print(s) print(result) {'oldboy', 'jinxin'} alex
remove() 删除集合中指定的元素 删除不存在的元素会报错。
s={"oldboy","alex","jinxin"} s.remove('zy') print(boys) KeyError: 'zy'
discard() 删除集合中指定的元素 删除不存在的元素不报错。
s={"oldboy","alex","jinxin"} s.discard('zy1') print(s) {'jinxin', 'oldboy', 'alex'}
clear() 清空集合。
s={"oldboy","alex","jinxin"} s.clear() print(s) set()
集合:关系测试
交集:
set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} # 交集 & intersection print(set1 & set2) print(set1.intersection(set2)) {4, 5} {4, 5}
并集:
set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} #并集 | union print(set1 | set2) print(set1.union(set2)) {1, 2, 3, 4, 5, 6, 7, 8} {1, 2, 3, 4, 5, 6, 7, 8}
差集:不同的位置,等到的结果不同
set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} # 差集 - difference print(set1 - set2) print(set1.difference(set2)) print(set2 - set1) {1, 2, 3} {1, 2, 3} {8, 6, 7}
对称差集:
set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1 ^ set2) print(set1.symmetric_difference(set2)) {1, 2, 3, 6, 7, 8} {1, 2, 3, 6, 7, 8}
子集:
set1 = {1, 2, 3} set2 = {1, 2, 3, 4, 5, 6} print(set1 < set2) print(set1.issubset(set2)) True True
超集:超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集。
set1 = {1, 2, 3} set2 = {1, 2, 3, 4, 5, 6} print(set2 > set1) print(set2.issuperset(set1)) True True
不可变集合:
set1 = {1, 2, 3} set1 = frozenset(set1) print(set1,type(set1)) frozenset({1, 2, 3}) <class 'frozenset'>