Python常用库1:collections,容器数据类型
创始人
2024-01-17 04:14:11
  • collections:数据容器 点这里跳到原文地址。
  • 预计阅读时长:10分钟+
  • 未完待续,遇到相关力扣题目,会继续补充~

文章目录

  • 前言
  • 一、Collections中的内置函数
  • 二、各个函数的使用
    • 1. deque
      • 1.1 deque的介绍
      • 1.2 deque支持的方法
      • 1.3 使用deque解决二叉树的层序遍历
    • 2. 认识ChainMap
    • 3. Counter
      • 3.1 使用Counter解决:力扣169. 多数元素
      • 3.2 使用Counter解决:力扣136. 只出现一次的数字
  • 总结


前言

   collections 是Python自带的库函数之一,该模块实现了专门的容器数据类型,为 Python 的通用内置容器、dict、list、set 和 tuple 提供了替代方案。


一、Collections中的内置函数

函数名称函数作用
namedtuple()用于创建具有命名字段的元组子类的工厂函数
deque()类似列表的容器,两端都可以增加和弹出
ChainMap()用于创建多个映射的单个视图的类 dict 类
Counter()用于计算可散列对象的 dict 子类
OrderedDict()添加了记住订单条目的 dict 子类
defaultdict()调用工厂函数以提供缺失值的 dict 子类
UserDict()包装字典对象以便更容易地进行字典子类化
UserList()包装列表对象以便更轻松地进行列表子类化
UserString()围绕字符串对象进行包装,以便更轻松地进行字符串子类化

二、各个函数的使用

1. deque

1.1 deque的介绍

   deque其实就是双端队列功能的扩展,双端队列支持从双端队列的任一侧进行 追加弹出操作

1.2 deque支持的方法

   deque对象支持以下方法:

  • append(x):将 x 添加到双端队列的右侧
  • appendleft(x):将 x 添加到双端队列的左侧
  • clear():从双端队列中删除所有元素,使其长度为 0
  • copy():创建双端队列的一个副本
  • count(x) :计算双端队列中等于 x 的元素的数量
  • extend(iterable):通过附加可迭代参数中的元素来扩展双端队列的右侧
  • extendleft(iterable):通过附加来自可迭代的元素来扩展双端队列的左侧。注意,一系列左附加会导致可迭代参数中元素的顺序颠倒
  • index(x[, start[, stop]]):返回 x 在双端队列中的位置。如果未找到,则返回第一个匹配项或引发 ValueError
  • insert(i, x):将 x 插入到位置 i 的双端队列中
  • pop():从双端队列的右侧移除并返回一个元素
  • popleft():从双端队列的左侧移除并返回一个元素
  • remove(value):删除第一次出现的值
  • reverse():原地反转双端队列的元素,然后返回无。
  • rotate(n=1):向右旋转双端队列 n 步。如果 n 为负数,则向左旋转。

1.3 使用deque解决二叉树的层序遍历

  • 题目链接:102. 二叉树的层序遍历
  • 题目描述:给你二叉树的根节点 root ,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。
    示例1:
  • 解题思路:借助队列,模拟二叉树的层序遍历。第一步先让根节点进入队列并记录此时队列的大小size为什么要记录此时队列的大小呢,是因为我们要知道每一层有多少个节点,这样我们才知道我们遍历的是哪一层)。根据size的大小去操作队列的弹出与追加,具体操作如下图所示:
    在这里插入图片描述
  • python代码:
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
from collections import deque
class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:results = [] # 存放最终的结果if not root:return resultsqueue = deque([root])while queue:size = len(queue)result = []for _ in range(size):cur = queue.popleft()result.append(cur.val)if cur.left:queue.append(cur.left)if cur.right:queue.append(cur.right)results.append(result)return results

2. 认识ChainMap

   ChainMap(*maps)

3. Counter

   Counter是用于对可散列对象进行计数的dict子类。它是一个集合,其中元素存储为字典键,其计数存储为字典值。计数可以是任何整数值,包括零计数或负计数。Counter类类似于其他语言中的包或多集。

3.1 使用Counter解决:力扣169. 多数元素

  • 题目链接:169. 多数元素
  • 题目描述:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
  • 解题思路:利用哈希表统计数组nums中每个元素出现的次数,输出最大的。这里借助collections库中的Counter容器,将nums存储为字典形式,键是nums中的元素,值是该元素所出现的次数,最后输出最大键即可。
  • python代码如下
class Solution:def majorityElement(self, nums: List[int]) -> int:counts = collections.Counter(nums)return max(counts.keys(), key=counts.get)

3.2 使用Counter解决:力扣136. 只出现一次的数字

  • 题目链接:136. 只出现一次的数字
  • 题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。【你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?】
  • 解题思路:与上一题十分类似,只是返回值的区别。
  • python代码实现:
class Solution:def singleNumber(self, nums: List[int]) -> int:counts = collections.Counter(nums)return min(counts.keys(), key=counts.get)

总结

  未完待续~~~。

上一篇:谢谢你没有关注我

下一篇:目标指标

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...