Python 集合

Python集合介绍

Python集合是Python的一种内置数据类型,用于储存不同的数据元素,它是一种可变的无序容器。

Python的集合有两种类型:set和frozenset。其中set是可变的类型,而frozenset则是不可变的类型。

创建集合

Python集合的创建可以使用大括号{}和set()函数进行实现。

#使用大括号创建集合

numbers = {1, 2, 3, 4, 5}

print(numbers)

#使用set()函数创建集合

animals = set(['cat', 'dog', 'rabbit'])

print(animals)

注意:当我们使用大括号创建集合时,我们不能使用{}这样的方式,因为这样的方式创建的是一个空的字典。

#创建一个空集合

empty_set = set()

print(empty_set)

#如果我们使用大括号创建一个空集合,它实际上将创建一个空字典

empty_dict = {}

print(type(empty_dict))

集合的操作

Python集合支持一个基础的数学运算,如并集,交集,差集,对称差集等等。我们可以使用以下方法实现各种操作。

1. 并集

将两个集合中的所有元素合并到一个集合中,重复的元素只会出现一次。

set1 = {1, 2, 3}

set2 = {3, 4, 5}

set3 = set1.union(set2)

print(set3)

#使用|运算符也可以实现并集操作

set4 = set1 | set2

print(set4)

2. 交集

获取两个集合中共有的元素。

set1 = {1, 2, 3}

set2 = {3, 4, 5}

set3 = set1.intersection(set2)

print(set3)

#使用&运算符也可以实现交集操作

set4 = set1 & set2

print(set4)

#判断两个集合是否没有共同的元素

set5 = {1, 2, 3}

set6 = {4, 5, 6}

print(set5.isdisjoint(set6))#True

3. 差集

获取两个集合中不同的元素(从set1中删除set2中的元素)。

set1 = {1, 2, 3}

set2 = {2, 3, 4}

set3 = set1.difference(set2)

print(set3)

#使用-运算符也可以实现差集操作

set4 = set1 - set2

print(set4)

#从set1中去除set2中的所有元素

set1.difference_update(set2)

print(set1)

4. 对称差集

获取两个集合中不同的元素(属于set1或set2中一个集合,但不属于两个集合同时拥有)

set1 = {1, 2, 3}

set2 = {2, 3, 4}

set3 = set1.symmetric_difference(set2)

print(set3)

#使用^运算符也可以实现对称差集操作

set4 = set1 ^ set2

print(set4)

5. 增加和删除元素

可以使用add()方法和remove()方法在集合中增加和删除元素,也可以使用discard()方法删除一个元素,如果这个元素不存在,它会什么也不做。

set1 = {1, 2, 3}

set1.add(4)

print(set1)

set1.remove(2)

print(set1)

set1.discard(10)

print(set1)

6. 更新集合

可以使用update()方法将一个集合中的元素添加到另一个集合中。

set1 = {1, 2, 3}

set2 = {2, 3, 4}

set1.update(set2)

print(set1)

7. 清空和删除集合

可以使用clear()方法清空集合中的所有元素,也可以使用del语句删除整个集合。

set1 = {1, 2, 3}

set1.clear()

print(set1)

set2 = {4, 5, 6}

del set2

frozenset类型介绍

frozenset是Python的另一种集合类型,它是一种不可变类型,它与set类型类似,但是不支持修改操作,因此它可以作为字典类型的键值。

创建frozenset类型

与set类型的创建方法类似,可以使用frozenset()方法来创建frozenset类型。

set1 = {1, 2, 3}

frozen_set = frozenset(set1)

print(frozen_set)

访问frozenset类型

frozenset类型与set类型类似,它可以使用for循环迭代,也可以使用in关键字检查元素是否存在于集合中。

frozen_set = frozenset([1, 2, 3, 4, 5])

for i in frozen_set:

print(i)

print(1 in frozen_set)

总结

Python集合是一种非常有用的数据类型,它支持一组基本操作,如并集、交集、差集、对称差集等常用运算,也可以使用增加、删除、更新、清空等方法操作集合。

frozenset是一种不可变类型的集合,如果你的代码需要传递数据给函数或其他代码,而安全性很重要,那么可以使用frozenset类型的集合。

后端开发标签