基于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 30 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
对python函数签名的方法详解
Jan 22 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
python字典的遍历3种方法详解
Aug 10 Python
python安装本地whl的实例步骤
Oct 12 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
python实现串口通信的示例代码
Feb 10 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
解析strtr函数的效率问题
2013/06/26 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
繁简字转换功能
2006/07/19 Javascript
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
详解vue v-model
2020/08/31 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python 中@property的用法详解
2020/01/15 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
大三自我鉴定范文
2013/10/05 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
暑期实践思想汇报
2014/01/06 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
团委竞选演讲稿
2014/04/24 职场文书
创业计划书之校园超市
2019/09/12 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
SQL Server连接查询的实用教程
2021/04/07 SQL Server
python实现Thrift服务端的方法
2021/04/20 Python
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js