基于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 translator使用实例
Sep 06 Python
python实现中文分词FMM算法实例
Jul 10 Python
python函数局部变量用法实例分析
Aug 04 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Django异步任务线程池实现原理
Dec 17 Python
Python接口自动化判断元素原理解析
Feb 24 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Python中random模块常用方法的使用教程
Oct 04 Python
python3代码中实现加法重载的实例
Dec 03 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添加Redis模块及连接
2015/07/28 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
菜单效果
2006/10/14 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python求导数的方法
2015/05/09 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
python实现月食效果实例代码
2019/06/18 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python 等差数列末项计算方式
2020/05/03 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
直接有效的自我评价
2014/01/11 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
公司晚会策划方案
2014/05/17 职场文书
保护动物的宣传语
2015/07/13 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis