set可以很方便的进行并集、差集、交集、补集等的操作,这是其他容器做不到的。
「交集 &」: x&y,返回一个新的集合,包括同时在集合 x 和y中的共同元素。
「并集 |」 : x|y,返回一个新的集合,包括集合 x 和 y 中所有元素。
「差集 -」 : x-y,返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素。
「补集 ^」 : x^y,返回一个新的集合,包括集合 x 和 y 的非共同元素。
所以总结set的两个重要作用:
「1、消除重复元素」
「2、关系测试(各种集)」
列如:
输入
a = [0,1,2,3,4]
b = [0,2,6]
list(set(a) & set(b)) # 使用 "&" 运算求a与b的交集,输出:[0, 2]
list(set(a) | set(b)) # 使用 "|" 运算求a与b的并集,输出:[0, 1, 2, 3, 4, 6]
list(set(a) - set(b)) # 使用 "-" 运算求a与b的差(补)集: 求a中有而b中没有的元素,输出:[1, 3, 4]
list(set(a) ^ set(b)) # 使用 "^" 运算求a与b的对称差集,输出:[1, 3, 4, 6]
输出
求交集: list(set(a) & set(b)) 输出 -> [0, 2]
求并集: list(set(a) | set(b)) 输出 -> [0, 1, 2, 3, 4, 6]
求差(补)集: list(set(a) - set(b)) 输出 -> [1, 3, 4]
求对称差集: list(set(a) ^ set(b)) 输出 -> [1, 3, 4, 6]