本篇阅读的代码实现了将列表进行映射,并求取映射后的平均值。

本篇阅读的代码片段来自于30-seconds-of-python

average_by

def average_by(lst, fn=lambda x: x):
return sum(map(fn, lst), 0.0) / len(lst) # EXAMPLES
average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n']) # 5.0

该函数用于在列表中求取平均数。该代码片段中主要使用了lambda表达式和map函数。该函数的主要逻辑是使用lambda表达式和map函数提取由待计算的数值组成的迭代器,然后使用sum函数计算列表的和,再除以列表长度。

lambda表达式

形如lambda parameters: expression的表达式可以创建一个匿名函数。在该代码片段中,lambda表达式出现在函数average_by参数定义中,作为一个参数传给了fn。因此在average_by函数体中fn作为刚刚在参数中定义的函数发挥作用。

函数average_by的默认参数中的lambda表达式是一个直接返回输入参数的函数。在例子中,向average_by传入的匿名函数返回字典中key值为n项的值。

map函数

map函数是Python内置的一个高阶函数,这个函数很有意思,它的参数是一个函数以及一个可迭代对象。它会返回一个迭代器,这个迭代器会将参数中的函数应用在参数中可迭代对象上。

其他类似函数

30-seconds-of-python中还有一些类似的代码片段。在理解了average_by函数之后,这些都很容理解。

max_by

def max_by(lst, fn):
return max(map(fn, lst)) # EXAMPLES
max_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 8

min_by

def min_by(lst, fn):
return min(map(fn, lst)) # EXAMPLES
min_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 2

sum_by

def sum_by(lst, fn):
return sum(map(fn, lst)) # EXAMPLES
sum_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 20

Python代码阅读(第1篇):列表映射后的平均值的更多相关文章

  1. Python代码阅读(第8篇):列表元素逻辑判断

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的三份代码的功能分别是判断列表中的元素是否都符合给定的条件:判断列表中是否存在符合给定的条件的元素:以及判断列表中 ...

  2. Python代码阅读(第11篇):展开嵌套列表

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了展开嵌套列表的功能,将一个嵌套的list展开成一个一维list(不改变原有列表的顺序). 本篇阅读的代 ...

  3. Python代码阅读(第12篇):初始化二维数组

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组. 本篇阅读的代码片段来自于30-seconds-o ...

  4. Python代码阅读(第21篇):将变量名称转换为蛇式命名风格

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现将变量名称转换为蛇式命名风格(snake case)的功能. 本篇阅读的代码片段来自于30-second ...

  5. Python代码阅读(第10篇):随机打乱列表元素

    本篇阅读的代码实现了随机打乱列表元素的功能,将原有列表乱序排列,并返回一个新的列表(不改变原有列表的顺序). 本篇阅读的代码片段来自于30-seconds-of-python. shuffle fro ...

  6. Python代码阅读(第2篇):数字转化成列表

    本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项. 本篇阅读的代码片段来自于30-seconds-of-python. digitize def d ...

  7. SourceInsight支持Python代码阅读

    这个话题,很简单,主要是要有一个插件Python.CLF,这个文件可以从我的GitHub上下载.然后,参照下面的图片显示的步骤,就很快搞定! 具体的步骤,看下面的三张图片,顺序编号了,从1到9,对照着 ...

  8. python基础知识第三篇(列表)

    列表 list 类 中提供的方法 li=[1,5,dhud,dd,] 通过list类创建的对象 中括号括起来 逗号分隔每个元素 列表中的元素可以是数字,字符串,也可以是列表,也可以是布尔值 所有的都能 ...

  9. 【Python代码】随机抽取文件名列表NameList中的Name作为训练集

    #!/usr/bin/env python #coding=utf-8 #随机抽取一部分图片作为测试集 import random NameList=[]#存储所有图片名字 ''' NameListP ...

随机推荐

  1. robotframework - database操作(增删改查)

    1.前置配置条件准备 a.mysql环境配置ok b.robot环境配置ok c.pip 安装robotframework-databaselibrary 2.mysql数据操作 -->以操作 ...

  2. Springboot中注解@Configuration源码分析

    Springboot中注解@Configuration和@Component的区别 1.先说结论,@Configuration注解上面有@Component注解,所以@Component有的功能@Co ...

  3. Kubernetes全栈架构师(基本概念)--学习笔记

    目录 为什么要用Kubernetes? K8s控制节点-Master概念 K8s计算节点-Node概念 什么是Pod? 为什么要引入Pod? 创建一个Pod 零宕机发布应用必备知识:Pod三种探针 零 ...

  4. SAML 2.0 实例分析 idp向sp发送响应(4)

    当idp与user建立起联系后,idp向sp发送响应 <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol ...

  5. 新建一个DJango项目

    好长时间没有用过DJango了,都忘记了怎么使用,哈哈哈,看到一篇讲的很好的博客,直接附链接了. https://blog.csdn.net/woo_home/article/details/9645 ...

  6. 深入刨析tomcat 之---第14篇 对应19章,使用manager管理 web应用

    writedby 张艳涛 第19章讲的是管理程序,当一个tomcat启动的时候,能通过远程浏览器能访问tomcat,启动web应用,关闭web应用,查看web应用 怎么实现的呢? 在webapp 文件 ...

  7. nacos Failed to obtain JDBC Connection 连接异常

    在conf/目录下,将application.properties.example 改名为bootstrap.properties 将连接数据库信息添加到末尾 # db mysql spring.da ...

  8. ondblclick="return showCodeList 分析思路

    <Div id="divApproveRejectReasonInput" style="display:none"><input class ...

  9. zabbix latest.php SQL注入漏洞(CVE-2016-10134)

    Zabbix 2.2.14之前的版本和3.0.4之前的3.0版本 latest.php页面提取cookie中的zbx_sessionid的后16位 246c58ba963457ef http://19 ...

  10. MegEngine TensorCore 卷积算子实现原理

    作者:章晓 | 旷视 MegEngine 架构师 一.前言 2020 年 5 月 Nvidia 发布了新一代的 GPU 架构安培(Ampere).其中和深度学习关系最密切的莫过于性能强劲的第三代的 T ...