详解Python 集合和多重集合

  • Post category:Python

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}

集合支持的主要操作包括添加元素、删除元素、求交集、求并集、求差集等。下面对这些操作进行详细介绍。

  1. 添加元素

可以用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}
  1. 删除元素

可以用remove()方法或者discard()方法来删除集合中的元素。两个方法的区别在于,如果要删除的元素不存在于集合中,remove()方法会抛出KeyError异常,而discard()方法会忽略这种情况。

set1 = {1, 2, 3}
set1.remove(3)
print(set1) # {1, 2}

set1.discard(4)
print(set1) # {1, 2}
  1. 求交集

可以用intersection()方法或者&运算符求两个集合的交集。

set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.intersection(set2)) # {2, 3}

print(set1 & set2) # {2, 3}
  1. 求并集

可以用union()方法或者|运算符求两个集合的并集。

set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.union(set2)) # {1, 2, 3, 4}

print(set1 | set2) # {1, 2, 3, 4}
  1. 求差集

可以用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})

多重集合支持的主要操作包括添加元素、删除元素、求交集、求并集、求差集等。和普通集合相比,多重集合在添加元素时可以添加相同元素的次数。

  1. 添加元素

可以使用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})
  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})
  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})
  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 集合和多重集合使用方法的完整攻略,希望对您有所帮助。