基于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 14 Python
python实现发送邮件功能
Jul 22 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python实现Restful API的例子
Aug 31 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
Python3实现建造者模式的示例代码
Jun 28 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
ZF等常用php框架中存在的问题
2008/01/10 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
python中tab键是什么意思
2020/06/18 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
英语故事演讲稿
2014/04/29 职场文书
幼儿发展评估方案
2014/06/11 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
Python基础之数据结构详解
2021/04/28 Python