基于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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python实现根据图标提取分类应用程序实例
Sep 28 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python第三方库的安装方法总结
Jun 06 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
Python的log日志功能及设置方法
Jul 11 Python
Python任务调度模块APScheduler使用
Apr 15 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
Python如何定义接口和抽象类
Jul 28 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
Python 图片处理库exifread详解
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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP的博客ping服务代码
2012/02/04 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
php封装的smarty类完整实例
2016/10/19 PHP
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
详解node nvm进行node多版本管理
2017/10/21 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python装饰器初探(推荐)
2016/07/21 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
pytorch构建多模型实例
2020/01/15 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
有多年工作经验的自我评价
2014/03/02 职场文书
党课培训主持词
2014/04/01 职场文书
广告宣传策划方案
2014/05/21 职场文书
读书月活动方案
2014/05/22 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
简易版租房协议书范本
2014/10/13 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书