1. 集合基本介绍
在Python语法中,集合(sets)是一种比列表和元组更高效的数据结构,它是一组无序的唯一元素的集合。集合中的元素必须是不可变的,可以是数字、字符串、元组等。Python集合类似于数学中的集合,与数学中的集合一样,Python集合的元素也没有顺序,且不能重复出现。
创建一个空集合可以使用set()函数或直接使用{},但如果想要创建一个空字典则只能使用{}。
#创建一个空集合
empty_set = set()
empty_set2 = {}
print(type(empty_set)) #输出
print(type(empty_set2)) #输出
1.1 集合的基本操作
下面介绍集合的几种基本操作:
1.1.1 添加元素
向集合中添加元素使用add()方法。如果添加的元素已经在集合中,那么它不会重复添加。
my_set = {1, 2, 3}
my_set.add(4)
my_set.add(2)
print(my_set) #输出{1, 2, 3, 4}
1.1.2 移除元素
从集合中移除元素使用remove()或discard()方法。如果要移除的元素不存在于集合中,remove()方法将引发一个KeyError错误,而discard()方法不会。
my_set = {"apple", "banana", "orange", "pear"}
my_set.discard("apple")
my_set.remove("banana")
my_set.discard("grape")
my_set.remove("grape") #KeyError: 'grape',因为该元素不存在于集合中
1.1.3 清空集合
清空集合使用clear()方法。
my_set = {1, 2, 3}
my_set.clear()
print(my_set) #输出set()
1.1.4 集合的长度
获取集合的长度使用len()函数。
my_set = {1, 2, 3, 4, 5}
print(len(my_set)) #输出5
1.2 集合的运算
集合可以像数学中的集合一样进行一些运算,例如并集、交集、差集和对称差。
1.2.1 并集
获取两个集合的并集使用union()方法或"|"(或运算)。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.union(set2)) #输出{1, 2, 3, 4, 5, 6}
print(set1 | set2) #输出{1, 2, 3, 4, 5, 6}
1.2.2 交集
获取两个集合的交集使用intersection()方法或"&"(与运算)。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.intersection(set2)) #输出{3, 4}
print(set1 & set2) #输出{3, 4}
1.2.3 差集
获取两个集合的差集使用difference()方法或"-"(减运算符)。注意顺序的不同,结果也会不同。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.difference(set2)) #输出{1, 2}
print(set1 - set2) #输出{1, 2}
print(set2 - set1) #输出{5, 6}
1.2.4 对称差
获取两个集合的对称差使用symmetric_difference()方法或"^"(异或运算)。对称差就是两个集合的并集去掉它们的交集。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.symmetric_difference(set2)) #输出{1, 2, 5, 6}
print(set1 ^ set2) #输出{1, 2, 5, 6}
2. 不可变集合
Python中还有一种集合叫做不可变集合,即frozenset。不可变集合是一种可散列的集合,因此可以将其作为另一个集合的元素或者字典的键使用。
my_frozenset = frozenset([1, 2, 3])
print(my_frozenset) #输出frozenset({1, 2, 3})
与Python中的集合相比,不可变集合的操作比较有限,不能添加、删除或修改元素。
3. 总结
本文对Python语法中的集合进行了介绍,在实际应用中,集合常用于去重、检查某个元素是否存在、求交集、并集等操作。需要注意的是,Python中的集合元素必须是不可变的,且集合本身是无序的,但是可变集合和不可变集合的差异在于可变集合可以添加、删除或修改元素,而不可变集合则不能。
总之,集合是Python语法中一个十分实用的数据结构,对于编写高效的Python程序具有重要的意义。