PTYHON-COOKBOOK学习记录-3

heapq模块:用python简易得到最大最小值(很好用,性能强)
1.heapq中,有nlargest()和nsmallest()函数,可以很快的得到一个复杂数据中的n个最大值或者最小值:使用如下:


image.png

运行结果如下:


image.png

以此可以很快得到一个数据中的最大最小值。

顺便解释一下lambda,lambda是python中自带的一个函数,可以通过它创建一个匿名函数(不需要名字的函数,不理解没关系请看下面的解释)。

以代码做解释:


image.png

比如上面的17,18行代码中,我们需要根据portfolio这个复杂列表中字典中的‘price’这个关键字来取出价钱最便宜的name对应的信息。

我们上面说的nlargest()和nsmallest()函数是需要把我们代码中portfolio列表的元素一个个进行分析并排出大小,因此可以理解为nlargest()函数中是依次传入portfolio当中的一个元素进行分析并返回结果的。

那我们需要用到这个元素(这个元素类型是字典形式)中的‘price’值来进行判断,所以就需要把这个‘price’关键字对应的value返回给nlargest()作为排序的参考依据。
key=lambda s:s['price']
这行代码就起到了这个一个传递‘price’对应数字给nlargest()函数中的key的作用。

本来是需要定义一个函数(如下举例)
def example(dir):
return dir['dir']

key=example(portfolio[n])
把portfolio当中的元素一个个传到 example当中,并且把返回结果赋值给nlargest()中的key。
这其实是两步。并且这种情况下是需要重新定义一个函数(如例子中的example)来处理这个过程的,但是lambda 就可以省掉这个def example的过程,不用再给return dir['dir']这个过程专门“起一个函数名”了,可以直接通过lambda达到以上目的,这就是匿名函数。

lambda的用法:lambda [arg]: function

  1. 堆数据
    nums=[1,3,2,5,6,8,4,22,3,43,2,34]
    nums本来是列表数据,可以通过heapify()函数转换为堆数据,堆数据中总是会把最小的数据默认放在第一个元素也即[0]中。所以可以通过堆数据的pop()得到一组数据中的最小值。
    看代码:


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,387评论 17 410
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,177评论 2 89
  • 人生苦短我用 Python 注:最后附电子书地址 一、Pythonic Thinking 第1条: 确认自己所用的...
    molscar阅读 6,335评论 0 3
  • 【诗语扬舲】20180209学习力践行119 今天吃饭时都由小语子分筷子,早上三双,分完问她三双总共多少支,又把筷...
    日遥草青阅读 1,171评论 0 0
  • 我已经写了二十三篇简书了。加上现在这一篇,就是我的第二十四篇简书了。 前几天,我听小汪老师(语文老师)说:“简书写...
    cheetah陈阅读 748评论 0 2

友情链接更多精彩内容