目录
5.11 symmetric_difference_update(集合)
set 集合
哈希表: Hash tanle 不能重复 1.元素不能重复 2.元素是无序的 set 集合 定义: set_data = {1, 2, 3} set_data = set() 注意:使用{}这种定义方式,不要定义空集合(默认是dict) 特点: 列表去重list(set())但去重后顺序无法确定,集合是无序的 set中的元素是不重复,且无序因此没有下标 支持union(联合),intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算 返回值:及执行玩操作后会产生一个新的值, 无返回值,及执行玩操作后不会产生一个新的值
内置函数
1. add(...)
add(...) 添加新元素 Add an element to a set. 将元素添加到集合中 This has no effect if the element is already present. 如果元素已存在则此操作不起作用 往set中添加元素4.6
set_data1 = {1, 2, 3}
set_data1.add(4)
print(set_data1) # 结果{1, 2, 3, 4}
set_data1.add(6)
print(set_data1) # 结果{1, 2, 3, 4, 6}
# 总结:命令add是在原函数上进行操作的,因此会添加到原函数上
2.clear(...)
clear(...) 清除(...) Remove all elements from this set. 移除此集合内所有元素
set_data1 = {1, 2, 3}
set_data1.clear()
print(set_data1) # 结果 set()
总结:命令clear是在原函数上进行操作的,因此会清除原函数中的元素
3.copy(...)
copy(...) 拷贝(...) Return a shallow copy of a set. 返回一个集合的浅表副本 使用方法与dict,list一样,想要了解请查看python中dict详解
4.set中的移除
__pop() 随机移除一个元素若为空,则抛出异常,无返回值 __remove(元素) 删除对应元素,若为空,则抛出异常, 无返回值 __discard(元素) 删除对应元素,若为空, 不抛出异常, 无返回值
set_data = {1, 1.1, 6+9j, "123", b'456', None, False, True, (1, 2)}
set_data1 = {1, 1.1, 6+9j, "123", b'456', None, False, (1, 2)}
set_data3 = {1.1, 6+9j, "123", b'456', None, False, True, (1, 2)}
print(set_data)
print(set_data1)
print(set_data3)
# 结论在python中True等于1
4.1 pop()
set_data4 = {1, 2}
set_data4.pop()
# print(set_data4) # 输出结果{2}
set_data4.pop()
print(set_data4) # 输出结果set()
set_data4.pop()
print(set_data4) # 会发生报错 KeyError: 'pop from an empty set'
4.2 remove(元素)
set_data5 = {1, 2}
set_data5.remove(1) # 输出结果{2}
print(set_data5)
set_data5.remove(2)
print(set_data5) # 输出结果set()
set_data5.remove(3)
print(set_data5) # 输出结果KeyError: 3
4.3 discard(元素)
discard(元素) Remove an element from a set if it is a member. 如果元素的成员,则从集合中移除该元素, If the element is not a member, do nothing. 如果元素不是成员,则什么也不做
set_data6 = {1, 2}
set_data6.discard(1)
print(set_data6) # 输出结果{2}
set_data6.discard(2)
print(set_data6) # 输出结果set()
set_data6.discard(3)
print(set_data6) # 输出结果set() 由此得出 discard对空值不会产生报错
# 总结:命令discard是在原函数上进行操作的,因此会使原函数中的元素发生改变
5.数学运算
所包含的函数 __update(集合) 合并集合 无返回值 __intersection(集合) 交集 有返回值 __union(集合) 并集 有返回值 __difference(集合) 差集 有返回值 difference_update(集合) 差异_更新 无返回值 isdisjoint(集合) 是否相交 有返回值 issubset(集合) 是否为子集 有返回值 issuperset(集合) 是否为父集 有返回值 intersection_update(集合)交集_更新 无返回值 symmetric_difference(集合)对称差 有返回值
5.1 __update(集合2)
__update(集合2) 合并集合
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data1.update(set_data2)
print(set_data1) # 输出结果 {1, 2, 3, 4, 5}
总结:不会产生一个新的集合,新产生的结果会在 (集合1.update(集合2))集合1中体现
5.2 __intersection(集合2)
__intersection(集合2) 交集 Return the intersection of two sets as a new set. 返回两个集合的交集作为一个新集。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data3 = set_data1.intersection(set_data2)
print(set_data3) # 输出结果 {1, 2, 3}
5.3__union(集合2)
__union(集合2) 并集 总结:会产生一个新的集合
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = set_data1.union(set_data2)
print(set_data3) # 输出结果 {1, 2, 3, 4, 5}
5.4__difference(集合2)
__difference(集合2) 差集 Return the difference of two or more sets as a new set. 返回两个或多个集合的差作为一个新集合。 (i.e. all elements that are in this set but not the others.) (即在此集合中但不在其他集合中的所有元素。)
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = set_data1.difference(set_data2)
set_data4 = set_data2.difference(set_data1)
print(set_data3) # 输出结果 {1, 2}
print(set_data4) # 输出结果 {4, 5}
5.5 difference_update(集合)
difference_update(集合) 差集_更新 Remove all elements of another set from this set. 从这个集合中移除另一个集合的所有元素。 将set_data1和set_data2中的共同元素在set_data2中移除
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data2.difference_update(set_data1)
print(set_data1) # 结果{1, 2, 3, 6}
print(set_data2) # 结果{4}
将set_data1和set_data2中的共同元素在set_data1中移除
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.difference_update(set_data2)
print(set_data1) # 结果{6}
print(set_data2) # 结果{1, 2, 3, 4}
总结: 命令difference_update是在原函数上进行操作的,因此会使原函数中的元素发生
5.6 isdisjoint(集合)
isdisjoint(集合) 是否相交 Return True if two sets have a null intersection. 如果两个集合的交集为空,则返回True。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.isdisjoint(set_data2)
print(set_data1.isdisjoint(set_data2)) # 结果 False
set_data1 = {1, 2, 3, 6}
set_data2 = {4, 5, 7}
set_data1.isdisjoint(set_data2)
print(set_data1.isdisjoint(set_data2)) # 结果True
5.7 issubset(集合)
issubset(集合) 是否为子集 Report whether another set contains this set. 报告另一个集合是否包含此集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2}
set_data1.issubset(set_data2)
print(set_data1.issubset(set_data2)) # 结果 False
set_data2.issubset(set_data1)
print(set_data2.issubset(set_data1)) # 结果 True
5.8 issuperset(集合)
issuperset(集合)是否为父集 Report whether this set contains another set. 报告此集合是否包含另一个集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2}
set_data1.issuperset(set_data2)
print(set_data1.issuperset(set_data2)) # 结果 True
print(set_data2.issuperset(set_data1)) # 结果 False
5.9 intersection_update(集合)
intersection_update(集合) 交集_更新 Update a set with the intersection of itself and another. 用自身和另一个集合的交集更新集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.intersection_update(set_data2)
print(set_data1) # 结果{1, 2, 3}
set_data2.intersection_update(set_data1)
print(set_data2) # 结果{1, 2, 3}
5.10 symmetric_difference(集合)
symmetric_difference(集合) 对称差 Return the symmetric difference of two sets as a new set. 返回两个集合的对称差作为一个新集合 (i.e. all elements that are in exactly one of the sets.) (即恰好位于其中一个集合中的所有元素。)
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.symmetric_difference(set_data2)
print(set_data1.symmetric_difference(set_data2)) # 结果{4, 6}
set_data2.symmetric_difference(set_data1)
print(set_data2.symmetric_difference(set_data1)) # 结果{4, 6}
5.11 symmetric_difference_update(集合)
symmetric_difference_update(集合) 对称差_更新 Update a set with the symmetric difference of itself and another. 用自身和另一个的对称差更新一个集合。