基于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之??碌某?? target=
Sep 12 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python单元和文档测试实例详解
Apr 11 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Python sep参数使用方法详解
Feb 12 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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中实现简单的ACL 完结篇
2011/09/07 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
js数组去重的hash方法
2016/12/22 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
keras 多任务多loss实例
2020/06/22 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
EJB实例的生命周期
2016/10/28 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
中国梦我的梦演讲稿
2014/04/23 职场文书
社会实践活动总结报告
2014/04/29 职场文书
体操比赛口号
2014/06/10 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python预测分词的实现
2021/06/18 Python
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
讨论nginx location 顺序问题
2022/05/30 Servers