当前位置: 首页 > news >正文

沈阳公司网站建设常州全景网站制作

沈阳公司网站建设,常州全景网站制作,股票软件定制开发,房产网站模板程序文章目录py3中 collections 的常用STL**Counter()** 函数**defaultdict()** 函数**deque()** 函数**orderedDict()** 函数(缺例题)小结py3中 collections 的常用STL 对于这个工具包非常好用,尤其是其中的 Counter() 函数 使用次数颇为频繁&a…

文章目录

  • py3中 collections 的常用STL
    • **Counter()** 函数
    • **defaultdict()** 函数
    • **deque()** 函数
    • **orderedDict()** 函数(缺例题)
  • 小结

py3中 collections 的常用STL

对于这个工具包非常好用,尤其是其中的 Counter() 函数 使用次数颇为频繁,现在对collections中的一些常用的容器函数进行梳理总结。
主要包括:
Counter() 函数,defaultdict() 函数,deque() 函数,orderedDict() 函数。将结合一些LC上的例题进行一个简单总结。
参考文档链接为:https://docs.python.org/3.8/library/collections.html

Counter() 函数

Counter() 函数功能非常强大,主要用于是计算散列对象的dict子类,有点抽象,也不知道百度翻译说的对不对,原为是:dict subclass for counting hashable objects,Counter()函数下的函数方法最常用的是:elements() 方法、most_common()方法,另外像 values() ,items(),del等,都非常实用,具体可以参见 Counter的文档。在此就不举例了,LC的例题将选择一道既包含Counter(),又包含defaultdict()的困难题。

defaultdict() 函数

dict subclass that calls a factory function to supply missing values,一个强大的字典存储器,有点像C++中的自定义数据类型。非常好用,也非常常用,常用的内置函数主要有:append()、items()、values(),具体参见defaultdict文档。

举一个LC上的例题:
题目链接:895. 最大频率栈
题目大意:设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。
实现 FreqStack 类:

  • FreqStack() 构造一个空的堆栈。
  • void push(int val) 将一个整数 val 压入栈顶。
  • int pop() 删除并返回堆栈中出现频率最高的元素。如果出现频率最高的元素不只一个,则移除并返回最接近栈顶的元素。

注意:(1)0 <= val <= 109;(2)push 和 pop 的操作数不大于 2 * 104;(3)输入保证在调用 pop 之前堆栈中至少有一个元素。

示例:

输入:
["FreqStack","push","push","push","push","push","push","pop","pop","pop","pop"],
[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]
输出:[null,null,null,null,null,null,null,5,7,5,4]
解释:
FreqStack = new FreqStack();
freqStack.push (5);//堆栈为 [5]
freqStack.push (7);//堆栈是 [5,7]
freqStack.push (5);//堆栈是 [5,7,5]
freqStack.push (7);//堆栈是 [5,7,5,7]
freqStack.push (4);//堆栈是 [5,7,5,7,4]
freqStack.push (5);//堆栈是 [5,7,5,7,4,5]
freqStack.pop ();//返回 5 ,因为 5 出现频率最高。堆栈变成 [5,7,5,7,4]。
freqStack.pop ();//返回 7 ,因为 5 和 7 出现频率最高,但7最接近顶部。堆栈变成 [5,7,5,4]。
freqStack.pop ();//返回 5 ,因为 5 出现频率最高。堆栈变成 [5,7,4]。
freqStack.pop ();//返回 4 ,因为 4, 5 和 7 出现频率最高,但 4 是最接近顶部的。堆栈变成 [5,7]。

参考代码:

class FreqStack:def __init__(self):# 设置三个变量 : (1)计频;(2)记元素;(3)固定最大频次。self.counter = collections.Counter()self.hash_map = collections. defaultdict(list)self.max_freq = 0def push(self, x: int) -> None:f = self.counter[x]+1self.counter[x] = fif f > self.max_freq:self.max_freq = f self.hash_map[f].append(x)def pop(self) -> int:x = self.hash_map[self.max_freq].pop()self.counter[x] -= 1if not self.hash_map[self.max_freq]:self.max_freq -= 1return x# Your FreqStack object will be instantiated and called as such:
# obj = FreqStack()
# obj.push(val)
# param_2 = obj.pop()

deque() 函数

list-like container with fast appends and pops on either end双头队列,在处理广度优先遍历、排序问题中非常常见,常用的内置函数方法有:append(),pop(),popleft() 等,具体参见deque文档。

举一个LC上的例题:
题目链接:933. 最近的请求次数
题目大意:
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请你实现 RecentCounter 类:

  • RecentCounter() 初始化计数器,请求数为 0 。
  • int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。
  • 保证 每次对 ping 的调用都使用比之前更大的 t 值。

注意:(1)1 <= t <= 109;(2)保证每次对 ping 调用所使用的 t 值都 严格递增;(3)至多调用 ping 方法 104 次。

示例:

输入:
["RecentCounter", "ping", "ping", "ping", "ping"]
[[], [1], [100], [3001], [3002]]
输出:
[null, 1, 2, 3, 3]解释:
RecentCounter recentCounter = new RecentCounter();
recentCounter.ping(1);     // requests = [1],范围是 [-2999,1],返回 1
recentCounter.ping(100);   // requests = [1, 100],范围是 [-2900,100],返回 2
recentCounter.ping(3001);  // requests = [1, 100, 3001],范围是 [1,3001],返回 3
recentCounter.ping(3002);  // requests = [1, 100, 3001, 3002],范围是 [2,3002],返回 3

参考代码:

class RecentCounter:def __init__(self):self.q = deque()def ping(self, t: int) -> int:self.q.append(t)while self.q[0] < t-3000:self.q.popleft()return len(self.q)# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)

orderedDict() 函数(缺例题)

dict subclass that remembers the order entries were added保留源字符串的顺序进行对应弹出或移动操作,这个我是用的不多,遇到后再补充吧。

举一个LC上的例题:
题目链接:
题目大意:
注意:
示例:
参考代码:

在这里插入代码片

小结

 总算把一些想整理的东西弄得差不多了,接下来要对以往学习的东西进行梳理,同时准备下一阶段的学习了,未来怎么走仍然充满可能性,相信可能性是个好东西吧!

http://www.sczhlp.com/news/82713/

相关文章:

  • 怎么维护网站教程鲅鱼圈网站怎么做
  • 设计网站排名如何进行网站改版设计
  • wordpress 竞拍优化营商环境建议
  • 江苏省两学一做网站快速建站完整版
  • 建设银行辽宁招聘网站建设银行官方网站云服务中心
  • 巩义网站网站建设新闻营销发稿平台
  • 帝国cms更改网站ico网站特效漂亮的网站
  • 农家乐网站 建设打开百度一下搜索
  • 做房产网站长淘宝流量平台
  • 九八智能建站同域名网站改版需要把之前网站里的文章都拷贝过来吗?
  • 天津滨海新区大爆炸wordpress怎么做优化
  • vscode的网站开发配置营销公司是什么意思
  • 自己做网站可以揽业务吗犀牛云做网站怎么做
  • 儿童学做彩泥的网站wordpress建留言板
  • SEO网站价格比如做百度知道 .html,这些都是我们不可控制的网站!
  • 做互联网需要网站吗查域名注册人
  • 程序员和网站建设app设计ppt
  • 福田网站设计哪家好移动商城 网站建设方法方式
  • 哪个厂家的广州网站建设查询网站有哪些导入链接及数量
  • 苏州网站开发网站开发费用西安推广网站
  • 广州移动 网站设计商务电商网站建设
  • 大学生创业服务网站建设方案做网站后台数据库建设
  • 网站制作费可以做业务宣传费先申请域名后做网站
  • wordpress后台登陆地址修改seo分析报告
  • 阿里巴巴网站装修怎么做全屏大图域名如何解绑一个网站
  • 湖北工业信息化网站备案个人建个网站多少钱
  • 网站建设评估网站开发用什么系统比较好
  • 百色网站建设公司百度推广网页制作
  • 网站开发不提供源代码美化wordpress h2
  • 一个商城网站开发周期河北seo网站优化公司