基于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 相关文章推荐
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python中__init__.py文件的作用详解
Sep 18 Python
20招让你的Python飞起来!
Sep 27 Python
python自定义异常实例详解
Jul 11 Python
Python基于dom操作xml数据的方法示例
May 12 Python
django_orm查询性能优化方法
Aug 20 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
浅谈pycharm使用及设置方法
Sep 09 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python不同系统中打开方法
Jun 23 Python
详解python字符串驻留技术
May 21 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基于IMAP收取邮件的方法示例
2017/08/07 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python实现图像全景拼接
2020/03/27 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
德国PC硬件网站:CASEKING
2016/10/20 全球购物
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
保洁主管岗位职责
2013/11/20 职场文书
前处理组长岗位职责
2014/03/01 职场文书
银行办公室岗位职责
2014/03/10 职场文书
关于环保的标语
2014/06/13 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript