python集合浅析(二)

166 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天

集合的运算

Python 中的集合和数学中的集合颇为相似,首先集合的所有元素都是唯一的,不存在重复;此外集合有子集、超集的概念,也可以进行交集、并集、差集的运算

1.求交集

可以通过 intersection 方法求多个集合的交集

交集 = 集合1.intersection(集合2, 集合3, 集合N)
​
>>> numbers_1 = {1, 2, 3}
>>> numbers_2 = {2, 3, 4}
>>> numbers_3 = {3, 4, 5}
>>> numbers_1.intersection(numbers_2, numbers_3)
{3}

也可以直接使用与运算符 & 来代替,完全等效

交集 = 集合1 & 集合2 & 集合N
​
>>> numbers_1 & numbers_2 & numbers_3
{3}

2.求并集

交集 = 集合1.union(集合2, 集合3, 集合N)
​
>>> numbers_1 = {1, 2, 3}
>>> numbers_2 = {2, 3, 4}
>>> numbers_3 = {3, 4, 5}
>>> numbers_1.union(numbers_2, numbers_3)
{1, 2, 3, 4, 5}

也可以直接使用或运算符 | 来代替,完全等效

交集 = 集合1 | 集合2 | 集合N
​
>>> numbers_1 | numbers_2 | numbers_3
{1, 2, 3, 4, 5}

3.求差集

交集 = 集合1.difference(集合2, 集合3, 集合N)
​
>>> numbers_1 = {1, 2, 3}
>>> numbers_2 = {2, 3, 4}
>>> numbers_3 = {3, 4, 5}
>>> numbers_1.difference(numbers_2, numbers_3)
{1}

也可以直接使用运算符 - 来代替,完全等效

交集 = 集合1 - 集合2 - 集合N
​
>>> numbers_1 - numbers_2 - numbers_3
{1}

4.判断是否为子集

判断 集合1 是否为 集合2 的子集

布尔值 = 集合1.issubset(集合2)
​
>>> numbers_1 = {2, 3}
>>> numbers_2 = {1, 2, 3}
>>> numbers_1.issubset(numbers_2)
True
>>> numbers_3 = {3, 4}
>>> numbers_1.issubset(numbers_3)
False

5.判断是否为超集

判断 集合1 是否为 集合2 的超集

布尔值 = 集合1.issuperset(集合2)
​
>>> numbers_1 = {1, 2, 3}
>>> numbers_2 = {2, 3}
>>> numbers_1.issuperset(numbers_2)
True
>>> numbers_3 = {3, 4}
>>> numbers_1.issuperset(numbers_3)
False

什么时候用集合

集合非常重要的一个特性是元素无重复,每个元素都是唯一的,重复的元素将被自动剔除(去重)。

所以如果我们需要存放一系列的数据,并且不希望其中出现重复,那么就可以使用集合。

另外如果想计算两个数据集的交集、并集、差集,使用集合来承载数据再合适不过了,集合自带的集合运算能轻松解决这些问题。

获取字典和集合中的元素数量

我们可以通过 len() 函数来获取字典中的键值对数量和集合中的元素数量

总结

字典是一种用来存放若干键值对的数据类型,可通过键来快速查找值。

字典的键需要是不可变的类型,如数字,字符串和元组。字典的值可以是任意类型。字典本身是可变的,所以可向其中添加、修改、删除键值对。

集合是一个用于存放批量元素的序列。它不是有序的,且元素不会有重复。集合也是可变的,我们可以向其中添加、删除、修改元素。