基于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 22 Python
python使用RNN实现文本分类
May 24 Python
Python常见内置高效率函数用法示例
Jul 31 Python
python递归全排列实现方法
Aug 18 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
pandas删除指定行详解
Apr 04 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
Python 线程池用法简单示例
Oct 02 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
Python根据指定文件生成XML的方法
Jun 29 Python
Django视图类型总结
Feb 17 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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/12/06 PHP
php中变量及部分适用方法
2008/03/27 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
php支付宝APP支付功能
2020/07/29 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python flask实现分页的示例代码
2018/08/02 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
python request 模块详细介绍
2020/11/10 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
主管竞聘书范文
2014/03/31 职场文书
触电现场处置方案
2014/05/14 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
关于分班的感言
2015/08/04 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js