Python求和函数sum用法详解:从基础到列表推导式实战
本文详解Python中sum函数的用法,包括参数iterable和start的作用。通过解析计算差值平方和的代码案例,深入讲解sum与列表推导式的结合使用,帮助读者理解简洁高效的Python语法技巧。
Python求和函数sum用法详解:从基础到列表推导式实战
在研读《集体编程智慧》一书时,遇到一段Python代码起初令人费解,甚至怀疑是排版错误。经过查阅sum函数的官方用法及参考多位Python专家编写的代码后,才意识到这是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语法的简洁与强大。
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"被称为列表推导式(List Comprehension)。这是一种在字符串序列或对象集合上执行相同操作的简洁写法,能够显著简化代码。
以上关于Python中sum函数用法的详解即为全部内容,希望能对读者有所帮助。欢迎大家参考实践,并支持本站获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









