基于Python中求和函数sum的用法详解


Posted in Python onJune 28, 2018

基于Python中求和函数sum的用法详解

今天在看《集体编程智慧》这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排版出错了,后来去了解了一下sum的用法,看了一些Python大神写的代码后才发现是自己浅薄了!特在此记录一下。书中代码段摘录如下:

from math import sqrt

def sim_distance(prefs, person1, person2):
 # 得到shared_items的列表
 si = {}
 for item in prefs[person1]:
  if item in prefs[person2]:
   si[item] = 1

 # 如果两者没有共同之处,则返回0
 if len(si) == 0: return 0

 # 计算所有差值的平方和
 sum_of_squares = sum([pow(prefs[person1][item] - prefs[person2][item], 2) 
      for item in prefs[person1] if item in prefs[person2]])

 return 1/(1 + sqrt(sum_of_squares))

自己不明白的代码块就是在计算所有差值的平方和这里,按照一般语言逻辑,应该是for语句和pow语句位置对调一下啊,很是困惑!后来查阅了一下sum函数的用法才豁然开朗,再次感叹Python之神(bian)奇(tai)语法。

sum函数的参数是这样的:sum(iterable[, start]),其中iterable为可迭代对象,可以是list、tuple或者dictionary等。

sum函数最后的值 = 可迭代对象里面的数相加的值 + start的值,其中start可以不写,默认为0。讲到这里,那么我们怎么去理解上面计算所有差值的平方和这段代码呢?其实很简单,看看下面这段代码,然后再回去看上面那段代码就会柳暗花明了!

from math import sqrt
a = range(1, 11)
b = range(1, 10)
c = sum([item for item in a if item in b])
print c

可以自己输入这段简单的代码运行试试,最终的结果是:45

补充一点:"item for item in a if item in b" 这种表达式叫作列表推导式,是在一组字符串或者一组对象上执行一条相同操作的简洁写法!

以上这篇基于Python中求和函数sum的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python代码的打包与发布详解
Jul 30 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
Python中交换两个元素的实现方法
Jun 29 Python
Python实现程序判断季节的代码示例
Jan 28 Python
python实现websocket的客户端压力测试
Jun 25 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Python笔试面试题小结
Sep 07 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
python如何调用字典的key
May 25 Python
python实现简单文件读写函数
Feb 25 Python
Python之list对应元素求和的方法
Jun 28 #Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 #Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 #Python
python-str,list,set间的转换实例
Jun 27 #Python
Python将多个list合并为1个list的方法
Jun 27 #Python
python进行两个表格对比的方法
Jun 27 #Python
Python快速查找list中相同部分的方法
Jun 27 #Python
You might like
解析php中反射的应用
2013/06/18 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP内核探索:变量概述
2014/01/30 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python局部赋值的规则
2013/03/07 Python
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python虚拟环境迁移方法
2019/01/03 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Numpy 多维数据数组的实现
2020/06/18 Python
python 如何将office文件转换为PDF
2020/09/22 Python
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
护理专业大学生自我推荐信
2014/01/25 职场文书
求职信需要的五点内容
2014/02/01 职场文书
销售人员求职信
2014/07/22 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
关于感谢信的范文
2015/01/23 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server