基于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实现根据窗口标题调用窗口的方法
Mar 13 Python
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
详谈python中冒号与逗号的区别
Apr 18 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python读取并写入mat文件的方法
Jul 12 Python
Django REST framework内置路由用法
Jul 26 Python
Python实现汇率转换操作
May 03 Python
python如何输出反斜杠
Jun 18 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
python flask开发的简单基金查询工具
Jun 02 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
php自动获取目录下的模板的代码
2010/08/08 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
javascript实现简易的计算器
2020/01/17 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
Django多数据库联用实现方法解析
2020/11/12 Python
新闻专业个人自我评价
2013/09/21 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
广播体操比赛口号
2014/06/10 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
新店开张宣传语
2015/07/13 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL