Python 集合
Python 集合是一种无序且不重复的数据类型。集合可以用大括号{}或者set()函数来创建,其中set()函数也可以用来转换其他可迭代对象为集合。
下面是创建集合的两种方法:
# 使用大括号创建集合
set1 = {1, 2, 3}
print(set1) # {1, 2, 3}
# 使用set()函数创建集合
set2 = set([1, 1, 2, 2, 3, 3])
print(set2) # {1, 2, 3}
集合支持的主要操作包括添加元素、删除元素、求交集、求并集、求差集等。下面对这些操作进行详细介绍。
- 添加元素
可以用add()方法或者update()方法来向集合中添加元素。其中add()方法只能添加单个元素,如果想添加多个元素,则需要使用update()方法。
set1 = {1, 2, 3}
set1.add(4)
print(set1) # {1, 2, 3, 4}
set1.update([5, 6])
print(set1) # {1, 2, 3, 4, 5, 6}
- 删除元素
可以用remove()方法或者discard()方法来删除集合中的元素。两个方法的区别在于,如果要删除的元素不存在于集合中,remove()方法会抛出KeyError异常,而discard()方法会忽略这种情况。
set1 = {1, 2, 3}
set1.remove(3)
print(set1) # {1, 2}
set1.discard(4)
print(set1) # {1, 2}
- 求交集
可以用intersection()方法或者&运算符求两个集合的交集。
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.intersection(set2)) # {2, 3}
print(set1 & set2) # {2, 3}
- 求并集
可以用union()方法或者|运算符求两个集合的并集。
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.union(set2)) # {1, 2, 3, 4}
print(set1 | set2) # {1, 2, 3, 4}
- 求差集
可以用difference()方法或者-运算符求两个集合的差集,其中difference()方法用于计算在当前集合中但不在指定集合中的元素。
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.difference(set2)) # {1}
print(set1 - set2) # {1}
多重集合
Python 中的多重集合是一种特殊的集合,允许存在相同的元素。可以使用collections模块中的Counter类来创建多重集合。
下面是创建多重集合的示例:
from collections import Counter
multi_set1 = Counter([1, 2, 3, 3, 4, 4, 4])
print(multi_set1) # Counter({4: 3, 3: 2, 1: 1, 2: 1})
multi_set2 = Counter({1: 2, 2: 3, 3: 2})
print(multi_set2) # Counter({2: 3, 1: 2, 3: 2})
多重集合支持的主要操作包括添加元素、删除元素、求交集、求并集、求差集等。和普通集合相比,多重集合在添加元素时可以添加相同元素的次数。
- 添加元素
可以使用update()方法来添加元素。其中,将多重集合作为参数传递给update()方法时,可以实现多重集合之间的合并。
multi_set = Counter([1, 2, 3])
multi_set.update([1, 1, 2, 2, 2])
print(multi_set) # Counter({2: 3, 1: 2, 3: 1})
- 删除元素
可以使用subtract()方法或者del语句删除多重集合中的元素。
multi_set = Counter([1, 2, 3, 3, 3])
multi_set.subtract([3, 3])
print(multi_set) # Counter({3: 1, 1: 1, 2: 1})
del multi_set[2]
print(multi_set) # Counter({3: 1, 1: 1})
- 求交集
可以使用&运算符求两个多重集合的交集。需要注意的是,&运算符求交集时,只会保留元素出现的最小次数。
multi_set1 = Counter([1, 2, 2, 3])
multi_set2 = Counter([2, 2, 3, 3])
print(multi_set1 & multi_set2) # Counter({2: 2, 3: 1})
- 求并集
可以使用|运算符求两个多重集合的并集。需要注意的是,|运算符求并集时,只会保留元素出现的最大次数。
multi_set1 = Counter([1, 2, 2, 3])
multi_set2 = Counter([2, 2, 3, 3])
print(multi_set1 | multi_set2) # Counter({2: 2, 3: 2, 1: 1})
以上就是Python 集合和多重集合使用方法的完整攻略,希望对您有所帮助。