基于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中的浅拷贝和深拷贝
May 30 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
Django实现简单网页弹出警告代码
Nov 15 Python
使用python动态生成波形曲线的实现
Dec 04 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
ES6正则的扩展实例详解
2017/04/25 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python装饰器用法实例分析
2019/01/14 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
Yahoo-PHP面试题3
2012/01/14 面试题
五年级语文教学反思
2014/01/30 职场文书
2014年元旦活动方案
2014/02/15 职场文书
培训班主持词
2014/03/28 职场文书
房地产开发项目建议书
2014/05/16 职场文书
出国留学担保书
2014/05/20 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
解析Redis Cluster原理
2021/06/21 Redis
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers