Python Set集合使用方法解析
Set(集合)是Python中的一种基本数据类型,它是一个无序、不重复的元素集合。
Set集合的创建
set()函数用于创建一个空的集合对象,也可以通过在一堆值的外面放置花括号 {} 来创建一个非空集合。
# 创建一个空的set集合
set1 = set()
print(set1) # set()
# 创建一个非空的set集合
set2 = {1, 2, 3, 4, 5}
print(set2) # {1, 2, 3, 4, 5}
Set集合的基本操作
添加元素
Set集合可以使用add()方法向其中添加元素,但是添加已存在的元素不会有任何效果。
set1 = {'apple', 'banana', 'orange'}
set1.add('pear')
print(set1) # {'orange', 'apple', 'pear', 'banana'}
set1.add('apple')
print(set1) # {'orange', 'apple', 'pear', 'banana'}
删除元素
Set集合可以使用remove()方法从其中删除元素,如果元素不在集合中,将会抛出异常。
set1 = {'apple', 'banana', 'orange'}
set1.remove('banana')
print(set1) # {'orange', 'apple'}
set1.remove('pear') # 抛出异常:KeyError: 'pear'
Set集合还可以使用discard()方法从其中删除元素,不过如果元素不在集合中,不会抛出异常。
set1 = {'apple', 'banana', 'orange'}
set1.discard('banana')
print(set1) # {'orange', 'apple'}
set1.discard('pear')
print(set1) # {'orange', 'apple'}
清空集合
Set集合可以使用clear()方法来清空其中的元素。
set1 = {'apple', 'banana', 'orange'}
set1.clear()
print(set1) # set()
Set集合的高级操作
Set集合支持多种高级操作,如集合运算和集合方法。
集合运算
Set集合可以进行并集、交集、差集和对称差集等集合运算。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 并集
set3 = set1.union(set2)
print(set3) # {1, 2, 3, 4, 5, 6, 7, 8}
# 交集
set4 = set1.intersection(set2)
print(set4) # {4, 5}
# 差集
set5 = set1.difference(set2)
print(set5) # {1, 2, 3}
set6 = set2.difference(set1)
print(set6) # {6, 7, 8}
# 对称差集
set7 = set1.symmetric_difference(set2)
print(set7) # {1, 2, 3, 6, 7, 8}
集合方法
Set集合还支持多种集合方法,例如issubset()、issuperset()、isdisjoint()等。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 判断是否为子集
print(set1.issubset(set2)) # False
print(set2.issubset(set1)) # False
set3 = {4, 5}
print(set3.issubset(set1)) # True
# 判断是否为超集
print(set1.issuperset(set2)) # False
print(set2.issuperset(set1)) # False
set4 = {1, 2}
print(set1.issuperset(set4)) # True
# 判断是否不相交
set5 = {6, 7, 8}
print(set1.isdisjoint(set2)) # False
print(set1.isdisjoint(set5)) # True
示例说明
示例1
假设有两个列表,其中存在一些重复元素,现在想要获得这两个列表中的不同元素,可以使用Set集合的差集方法。
list1 = [1, 2, 3, 4, 5, 6]
list2 = [4, 5, 6, 7, 8, 9]
set1 = set(list1)
set2 = set(list2)
diff = set1.difference(set2)
print(diff) # {1, 2, 3}
示例2
假设现在需要从一个列表中获取所有不重复的元素并且按照字母序升序排序,可以使用Set集合的自动排序功能。
list1 = ['orange', 'banana', 'apple', 'pear', 'apple', 'banana']
set1 = set(list1)
unique_list = list(set1)
unique_list.sort()
print(unique_list) # ['apple', 'banana', 'orange', 'pear']
在这个例子中,使用set()函数将列表转换为集合,得到的结果会自动去除重复元素,并按照字母序排序。然后将集合转换为列表,在使用sort()方法按照升序排序。