基于Python中求和函数sum的用法详解
作者:肖老板 时间:2022-12-05 23:26:18
基于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" 这种表达式叫作列表推导式,是在一组字符串或者一组对象上执行一条相同操作的简洁写法!
来源:https://blog.csdn.net/cloume/article/details/65971925
标签:Python,sum,求和
0
投稿
猜你喜欢
python实现字符串和日期相互转换的方法
2022-09-02 04:05:55
Microsoft SQL Server数据库SA权限总结
2009-01-06 11:32:00
深入理解golang的异常处理机制
2024-02-04 10:02:37
使用Python去除字符串中某个字符的多种实现方式比较
2023-07-15 00:45:13
讲解MySQL数据库字符集出错的解决方法
2008-12-02 14:32:00
MySQL优化教程之慢查询日志实践
2024-01-24 11:22:57
JavaScript实现酷炫的鼠标拖尾特效
2024-06-16 16:02:25
python中关于range()函数反向遍历的几种表达
2023-07-09 20:23:33
Echarts实现单条折线可拖拽效果
2024-04-10 13:59:17
Python实战之设计一个多功能办公小工具
2023-05-26 02:54:11
Python基础之高级变量类型实例详解
2021-11-09 11:07:40
Python使用Selenium模拟浏览器自动操作功能
2021-01-19 07:55:33
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2023-08-23 04:56:09
常用原生JS兼容性写法汇总
2024-04-22 22:38:15
Php header()函数语法及使用代码
2023-09-04 13:32:20
Centos6.x服务器配置jdk+tomcat+mysql环境(jsp+mysql)
2023-06-14 12:14:13
django 外键model的互相读取方法
2021-06-16 20:54:51
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2024-04-10 13:55:15
利用PHP实现词法分析器与自定义语言
2024-05-02 17:33:35
python wsgiref源码解析
2023-10-20 10:56:27