python 蓝桥杯之常用的库

heapq

heapq 是 Python 中的一个内置模块,提供了对堆数据结构的支持。堆是一种特殊的树形数据结构,具有以下特点:

  1. 在堆中,父节点的值总是小于或者大于它的子节点的值,这取决于是最小堆还是最大堆。
  2. 堆是一个完全二叉树,通常使用数组来实现。

heapq 模块提供了一系列函数,可以在普通的列表上模拟堆的行为。下面是一些 heapq 库的常用函数及其用法:

  1. heapify(iterable):将一个可迭代对象转换为堆数据结构。

    import heapq
    
    heap = [3, 1, 4, 1, 5, 9, 2, 6, 5]
    heapq.heapify(heap)
    print(heap)
    # 输出:[1, 1, 2, 5, 3, 9, 4, 6, 5]
    
  2. heappush(heap, item):向堆中添加一个新元素。

    import heapq
    
    heap = [3, 1, 4]
    heapq.heappush(heap, 2)
    print(heap)
    # 输出:[1, 2, 4, 3]
    
  3. heappop(heap):从堆中弹出并返回最小元素。

    import heapq
    
    heap = [1, 2, 4, 3]
    smallest = heapq.heappop(heap)
    print(smallest)  # 输出:1
    print(heap)      # 输出:[2, 3, 4]
    
  4. heapreplace(heap, item):弹出并返回最小元素,并将新元素推入堆中。

    import heapq
    
    heap = [1, 2, 4, 3]
    smallest = heapq.heapreplace(heap, 5)
    print(smallest)  # 输出:1
    print(heap)      # 输出:[2, 3, 4, 5]
    
  5. nlargest(n, iterable):返回可迭代对象中的前 n 个最大元素。

    import heapq
    
    numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
    largest = heapq.nlargest(3, numbers)
    print(largest)  # 输出:[9, 6, 5]
    
  6. nsmallest(n, iterable):返回可迭代对象中的前 n 个最小元素。

    import heapq
    
    numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
    smallest = heapq.nsmallest(3, numbers)
    print(smallest)  # 输出:[1, 1, 2]
    

这些函数为使用堆数据结构提供了便利,使得对列表的操作更加高效。

Counter

Counter 是 Python 标准库中 collections 模块提供的一个类,用于对可迭代对象中的元素进行计数。它提供了一种快速、高效的方式来统计列表、字符串或其他可迭代对象中各元素的出现次数,并以字典的形式返回统计结果。

以下是 Counter 类的一些主要特性和用法:

导入模块

from collections import Counter

创建一个 Counter 对象

# 通过列表创建 Counter 对象
word_counts = Counter(['apple', 'banana', 'apple', 'orange', 'banana', 'apple'])

# 通过字符串创建 Counter 对象
char_counts = Counter('abracadabra')

获取元素的出现次数

print(word_counts)
# 输出:Counter({'apple': 3, 'banana': 2, 'orange': 1})

print(char_counts)
# 输出:Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

访问特定元素的计数

print(word_counts['apple'])
# 输出:3

print(char_counts['a'])
# 输出:5

更新计数

update 接收的参数必须是可迭代的

# 通过加法更新计数
word_counts.update(['apple', 'orange'])
print(word_counts)
# 输出:Counter({'apple': 4, 'banana': 2, 'orange': 2})

# 通过减法更新计数
word_counts.subtract(['apple', 'banana'])
print(word_counts)
# 输出:Counter({'apple': 3, 'orange': 2, 'banana': 1})

那么对于整数的计数

from collections import Counter


num = Counter()
for i in range(10):
    num.update([i])

print(num)

我们可以给数字加上一个列表的外壳
返回一个类似字典的形式

获取计数值最高的元素

# 获取出现次数最高的两个元素及其次数
top_two = word_counts.most_common(2)
print(top_two)
# 输出:[('apple', 3), ('orange', 2)]

其他常用方法

  • elements(): 返回一个迭代器,包含所有计数大于 0 的元素。
  • keys(): 返回 Counter 对象中所有的元素。
  • values(): 返回 Counter 对象中所有元素的计数值。

Counter 类提供了一种简单而强大的方法来进行元素计数,尤其适用于需要统计频率、词频等问题。它的使用方法简单明了,能够快速地对数据进行统计分析。

defaultdict

defaultdict(set) 是一种使用 defaultdict 创建的特殊类型的字典,它的默认值是一个空的 set 集合。defaultdict(set) 的工作原理与普通的 defaultdict 类似,但是它的默认值类型是一个空的 set,这使得在使用时特别方便,尤其是在需要存储一组唯一值时。

下面是关于 defaultdict(set) 的详细介绍以及使用示例:

导入模块

from collections import defaultdict

创建一个 defaultdict(set)

d = defaultdict(set)

向字典中添加元素

d['group1'].add('value1')
d['group1'].add('value2')
d['group2'].add('value3')

在我们创建defaultdict 对象的时候,在具体的使用的时候,应该配合使用add , append 等方法

访问字典中的元素

print(d['group1'])  # 输出:{'value1', 'value2'}
print(d['group2'])  # 输出:{'value3'}

访问不存在的键

当你访问一个不存在的键时,defaultdict(set) 会自动创建这个键,并将其对应的值初始化为一个空的 set

print(d['group3'])  # 输出:set()

注意事项

  • 在使用 defaultdict(set) 时,你不需要手动初始化每个键的值为一个空的 set,因为它会自动创建并初始化这些值。
  • 当你向某个键对应的值中添加元素时,如果这个键不存在,defaultdict(set) 会自动创建该键并将其对应的值初始化为一个空的 set
  • 使用 defaultdict(set) 可以方便地管理一组唯一值,因为 set 可以确保其中的元素唯一性,并且你可以直接使用 add() 方法添加元素,而不必担心键不存在的问题。

相关推荐

  1. python 常用

    2024-03-11 17:46:02       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 17:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 17:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 17:46:02       87 阅读
  4. Python语言-面向对象

    2024-03-11 17:46:02       96 阅读

热门阅读

  1. 【软件测试】测试工具推荐

    2024-03-11 17:46:02       51 阅读
  2. 机器学习经典问题笔记

    2024-03-11 17:46:02       43 阅读
  3. vue3+element-plus el-input 自动获取焦点

    2024-03-11 17:46:02       45 阅读
  4. vue,Promise备忘

    2024-03-11 17:46:02       45 阅读
  5. 大数据组件之Sqoop

    2024-03-11 17:46:02       44 阅读
  6. Sqoop 学习

    2024-03-11 17:46:02       49 阅读
  7. jQuery改变元素的方法

    2024-03-11 17:46:02       44 阅读
  8. Linux(CentOS7.5):通过docker安装mysql8.0

    2024-03-11 17:46:02       41 阅读
  9. cudnn下载国内满速下载地址长期有效更新

    2024-03-11 17:46:02       35 阅读
  10. Redis info - 内存

    2024-03-11 17:46:02       40 阅读
  11. Apache拦截不安全漏洞

    2024-03-11 17:46:02       41 阅读