集合set
- 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
- 去重,把一个列表变成集合,就自动去重了。
- 关系测试,测试两组数据之前的交集、差集、并集等关系。
集合set创建
# The first method
craete_set = {1, 2, 3, (1, 2, 3)}
print(craete_set, type(craete_set))
# The second method
second_set = set({1, 2, 3, 6})
print(second_set, type(second_set))
集合set新增
set1 = {'run1','run2','run3','run4'}
set1.add('run5')
print(set1)
# update:迭代着增加
set1.update('A')
print(set1)
set1.update('my')
print(set1)
set1.update([1,2,3])
print(set1)
集合set删除
set1 = {'run1','run2','run3','run4'}
set1.remove('run1') # 删除一个元素
print("删除一个元素: ", set1)
set1.pop() # 随机删除一个元素
print("随机删除一个元素: ", set1)
set1.clear() # 清空集合
print("清空集合: ", set1)
del set1 # 删除集合
print("删除集合: ", set1)
集合set的其它操作
交集(& 或者 intersection)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2) # {4, 5}
print(set1.intersection(set2)) # {4, 5}
并集(| 或者 union)
set3 = {1,2,3,4,5}
set4 = {4,5,6,7,8}
print(set3 | set4) # {1, 2, 3, 4, 5, 6, 7}
print(set3.union(set4)) # {1, 2, 3, 4, 5, 6, 7}
差集(- 或者 difference)
set5 = {1,2,3,4,5}
set6 = {4,5,6,7,8}
print(set5 - set6) # {1, 2, 3}
print(set5.difference(set6)) # {1, 2, 3}
反交集(^ 或者 symmetric_difference)
set7 = {1,2,3,4,5}
set8 = {4,5,6,7,8}
print(set7 ^ set8) # {1, 2, 3, 6, 7, 8}
print(set7.symmetric_difference(set8)) # {1, 2, 3, 6, 7, 8}
子集与超集
set9 = {1,2,3}
set0 = {1,2,3,4,5,6}
print(set9 < set0)
print(set9.issubset(set0)) # 这两个相同,都是说明set9是set0子集。
print(set0 > set9)
print(set0.issuperset(set9)) # 这两个相同,都是说明set0是set0超集。
PS: frozenset不可变集合,让集合变成不可变类型
s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>