温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python进阶必读的书是什么

发布时间:2021-11-23 16:35:03 阅读:174 作者:iii 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容介绍了“Python进阶必读的书是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

python cookbook 一书非常经典,作者David Beazley,拥有超过20年的Python使用经验,再加上他很强的写作技能,所以值得一看。

它的翻译版本也有很多,其中比较优秀的版本是yidao620c翻译的,今天查阅翻译作者,就职华为。当然,最重要的还是书的内容好,这种按照一个小的话题展开讨论的方式,相信很多Python爱好者都比较喜欢。

这本书的话题要想理解透,还是需要具备一定的Python基础,不太适合纯Python小白。下面说说这本书,到底好在哪里,该怎么使用。

这是它的整体大纲目录,一共包括十五章,分别讨论:数据结构,字符串,数字,迭代器和生成器,文件与IO,函数、类、模块,网络编程,并发与测试。这些都属于Python中最最核心的知识模块,原书作者David个人推荐解决现实问题时,优先考虑Python中内置的模块是否能解决问题。

那么这本书到底好在哪里呢?它分话题展开讨论,每个话题都足够精简,无废话。最大限度的从实际应用总结每个知识点,比如在话题:保留最后N个元素时,编写的代码就很漂亮:

from collections import dequedef search(lines, pattern, history=5):    previous_lines = deque(maxlen=history)    for line in lines:        if pattern in line:            yield line, previous_lines        previous_lines.append(line)# Example use on a fileif __name__ == '__main__':    with open(r'../../cookbook/somefile.txt') as f:        for line, prevlines in search(f, 'python'5):            for pline in prevlines:                print(pline, end='')            print(line, end='')            print('-' * 20)
 

保留有限历史记录正是 collections.deque 大显身手的时候,难得是作者会对上面的代码做了简要的分析:

我们在写查询元素的代码时,通常会使用包含 yield 表达式的生成器函数,也就是我们上面示例代码中的那样。这样可以将搜索过程代码和使用搜索结果代码解耦

让我们真正明白到底好在哪里,以及Python内置的模块真的很强大。

再比如作者在讨论查找最大或最小的 N 个元素这个话题时,表面上这是一个很简单的话题,其实如果要考虑的全面,也是需要留意一些事情的。作者分别讨论了:

  • 当查找元素个数N = 1时,建议直接使用maxmin方法

  • 当查找元素个数接近整个列表长度时,建议使用sorted函数以切片的方式获取

  • 当要查找的元素个数相对比较小的时候,函数 nlargest()nsmallest() 是很合适的

相信大家都对前两种情况的解决方法比较熟悉,第三种使用内置模块heapq是算法中的堆结构,常见的大根堆,小根堆,

>>> nums = [182237-4182342372]>>> import heapq>>> heap = list(nums)>>> heapq.heapify(heap)>>> heap[-4212372182342378]>>>
 

Python中heapify后,默认建立一个小根堆。它最重要的特征是 heap[0] 永远是最小的元素。

Python进阶必读的书是什么

比如,如果想要查找最小的 3 个元素,你可以这样做,首先执行一次heappop后,次小元素变为最小,如下图所示:

>>> heapq.heappop(heap)-4
 

Python进阶必读的书是什么

再次执行两次后,就能得到列表的前三个最小的元素为[-4,1,2],此时的小根堆为如下图所示:

>>> heapq.heappop(heap)1>>> heapq.heappop(heap)2
 

Python进阶必读的书是什么

当然,也可以直接使用nsmallest获取前几个最小值。

“Python进阶必读的书是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4585819/blog/4784171

AI

开发者交流群×