基于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排序方法实例分析
Apr 30 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
Python 私有函数的实例详解
Sep 11 Python
python微信公众号之关键词自动回复
Jun 15 Python
python修改txt文件中的某一项方法
Dec 29 Python
Django工程的分层结构详解
Jul 18 Python
详解Python self 参数
Aug 30 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
如何在python中实现ECDSA你知道吗
Nov 23 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
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
jQuery 获取对象 定位子对象
2010/05/31 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
js轮播图代码分享
2016/07/14 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
原生js实现九宫格拖拽换位
2021/01/26 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python操作Word批量生成文章的方法
2015/07/28 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python实现excel转sqlite的方法
2017/07/17 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
python3排序的实例方法
2020/10/20 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
端午节活动策划方案
2014/03/09 职场文书
工会趣味活动方案
2014/08/18 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS