![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python Cookbook笔记
h_bomb
这个作者很懒,什么都没留下…
展开
-
Python Cookbook(数据结构与算法)实现优先级队列
问题:实现一个队列,能够以给定的优先级对元素排序,且每次pop操作时都会返回优先级最高的那个元素解决方法:利用heapq模块实现heapq这个模块提供了堆队列算法的实现,也称为优先队列算法。堆是一个二叉树,它的每个父节点的值都只会小于或大于所有孩子节点(的值)。它使用了数组来实现:从零开始计数,对于所有的 k ,都有 heap[k] <= heap[2k+1] 和 heap[k] <= heap[2k+2]。 为了便于比较,不存在的元素被认为是无限大。 堆最有趣的特性在于最小的元素总是在根结原创 2021-02-17 13:57:37 · 98 阅读 · 0 评论 -
Python Cookbook之数据结构与算法
找到最大或最小的N个元素问题:我们在某个集合中找到最大或最小的N个元素解决放案:heapq模块中有两个函数nlargest()和nsmallest()可以解决。import heapqnums = [1,8,2,23,7,-4,18,23,42,37,2]print(heapq.nlargest(3,nums)) #结果为[43,37,23]print(heapq.nsmallest(3,nums)) #结果为[-4,1,2]这两个函数都可以接收一个参数key,从而可以应用在更加复杂的原创 2021-02-14 20:48:05 · 129 阅读 · 2 评论 -
Python Cookbook之数据结构与算法
从任意长度的可迭代对象中分解元素问题:需要从某个可迭代对象中分解出N个元素,但是这个可迭代对象的长度可能超过N,会导致出现“too many values to unpack”的异常。解决方案:Python的“*表达式”可以用来解决这个问题。例如:假设开设了一门课程,并且决定在期末的作业成绩中去掉第一个和最后一个,只对中间剩下的成绩做平均分统计。*表达式可以解决这样的问题。def drop_first_last(grades): first,*middle,last = grades retu原创 2021-02-13 20:58:16 · 97 阅读 · 0 评论 -
2021-02-11
Python Cookbook之数据结构与算法1、将序列分解为单独的变量关键词:可迭代、分解,变量问题:有一个包含N个元素的元组或序列,将它分解为N个单独的变量。data = ['ABCD',50,3.14,(2020,12,31)]name,shares,pi,date = dataprint(name)print(shares)print(year)只要对象是可迭代的,就可以执行分解操作。包括字符串、文件、迭代器、生成器等。s=‘Hello’a,b,c,d,e=s当分解操作原创 2021-02-11 11:06:54 · 58 阅读 · 0 评论