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类型的集合。