详解Python 集合和多重集合

  • Post category:Python

Python 集合和多重集合是Python中用于统计元素个数、去重等操作的数据结构。下面介绍一下集合和多重集合的使用方法。

集合

什么是集合

集合是一个无序且不重复的集合,可以用于去重和关系测试等操作。

创建集合

可以使用大括号 {} 或者 set() 函数来创建集合。

# 使用大括号创建集合
a = {1, 2, 3}
print(a) # 输出:{1, 2, 3}

# 使用 set() 函数创建集合
b = set([1, 2, 3])
print(b) # 输出:{1, 2, 3}

集合操作

  • 添加元素:使用 add() 方法可以添加一个元素,使用 update() 方法可以添加多个元素。
a = {1, 2, 3}
# 添加单个元素
a.add(4)
print(a) # 输出:{1, 2, 3, 4}

# 添加多个元素
a.update([5, 6])
print(a) # 输出:{1, 2, 3, 4, 5, 6}
  • 删除元素:使用 remove() 或者 discard() 方法可以删除集合中的一个元素。
a = {1, 2, 3, 4, 5, 6}
# 删除单个元素
a.remove(6)
print(a) # 输出:{1, 2, 3, 4, 5}

# 删除不存在的元素不会报错,使用 discard() 方法也是同样效果
a.discard(7)
print(a) # 输出:{1, 2, 3, 4, 5}
  • 清空集合:使用 clear() 方法可以清空集合。
a = {1, 2, 3}
a.clear()
print(a) # 输出:set()
  • 判断元素是否在集合中:使用 in 关键字可以判断元素是否在集合中。
a = {1, 2, 3}
print(1 in a) # 输出:True
print(4 in a) # 输出:False

示例

# 示例一:去重操作
a = [1, 2, 2, 3, 4, 4, 5]
b = set(a)
print(list(b)) # 输出:[1, 2, 3, 4, 5]

# 示例二:判断重复元素
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
set_a = set(a)
set_b = set(b)
print(set_a & set_b) # 输出:{3, 4, 5}

多重集合

什么是多重集合

多重集合是元素可以重复的集合。

创建多重集合

可以使用 collections 模块中的 Counter() 函数来创建多重集合。

# 导入 collections 模块
import collections

# 创建多重集合
a = collections.Counter([1, 2, 2, 3, 3, 3])
print(a) # 输出:Counter({3: 3, 2: 2, 1: 1})

多重集合操作

多重集合不仅可以使用集合操作,还可以使用多重集合的特有操作。

  • 元素个数统计:使用 count() 方法可以统计某个元素在多重集合中出现的次数。
a = collections.Counter([1, 2, 2, 3, 3, 3])
print(a[3]) # 输出:3
  • 元素出现次数更新:使用 update() 方法可以更新多重集合中某个元素出现的次数。
a = collections.Counter([1, 2, 2, 3, 3, 3])
a.update([1, 1, 2, 2, 2, 2, 2])
print(a) # 输出:Counter({2: 6, 3: 3, 1: 3})
  • 获取出现次数最多的元素:使用 most_common() 方法可以获取多重集合中出现次数最多的元素及其个数。
a = collections.Counter([1, 2, 2, 3, 3, 3])
print(a.most_common(2)) # 输出:[(3, 3), (2, 2)]

示例

# 示例一:计算单词出现次数
sentence = 'the quick brown fox jumps over the lazy dog'
words = sentence.split()
word_counts = collections.Counter(words)
print(word_counts) # 输出:Counter({'the': 2, 'fox': 1, 'quick': 1, 'brown': 1, 'jumps': 1, 'over': 1, 'lazy': 1, 'dog': 1})

# 示例二:计算字符串中出现次数超过一定次数的字符
a = 'abcaabbcabc'
b = collections.Counter(a)
result = [char for char, count in b.items() if count > 2]
print(result) # 输出:['a', 'b', 'c']

以上就是Python 集合和多重集合的使用方法攻略,希望能对你有所帮助。