需求与方案系列
提出你的需求,让我来给你提供方案
派森先生
学习改变科技,科技改变生活
展开
-
需求与方案系列 -- 怎样实现一个按优先级排序的队列?
需求与方案系列 Q:怎样实现一个按优先级排序的队列?并且这个队列每次pop操作总是返回优先级最高的元素? A: 可以使用heapq模块实现一个简单的优先级队列: import heapq class PriorityQueue(): def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq.heappush(self.原创 2021-06-29 23:11:55 · 134 阅读 · 0 评论 -
需求与方案系列 -- 怎样才能从这个可迭代对象中解压出N个元素出来?
问题: 解压可迭代对象赋值给多个变量,如果一个可迭代对象的元素个数超过变量个数时,会出现”太多解压值”的异常。那么怎样才能从这个可迭代对象中解压出N个元素出来? 方案: Python的星号表达式可以用来解决这个问题。比如,你在学习一门课程,在学期末的时候,你想统计下家庭作业的平均成绩,但是排除掉第一个和最后一个分数。如果只有四个分数,你可能就直接去简单的手动赋值,但如果有24个呢?这时候星号表达式就派上用场了: def drop_first_last(grades): first, *middl翻译 2020-10-23 19:01:18 · 104 阅读 · 0 评论 -
需求与方案系列 -- 怎样从一个集合中获得最大或者最小的N个元素列表?
需求与方案系列(1) 问题: 怎样从一个集合中获得最大或者最小的N个元素列表? 方案: python heapq模块有两个函数:nlargest()和nsmallest()可以完美解决这个问题。 import heapq nums=[1,5,64,87,6,3,46,89,12,5,63] print(heapq.nlargest(3, nums)) # [89, 87, 64] print(heapq.nsmallest(3, nums)) # [1, 3, 5] 两个函数都能接受一个关键字参数,用于更翻译 2020-10-23 18:34:51 · 162 阅读 · 0 评论