基于Python中求和函数sum的用法详解
基于Python中求和函数sum的用法详解
今天在看《集体编程智慧》这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排版出错了,后来去了解了一下sum的用法,看了一些Python大神写的代码后才发现是自己浅薄了!特在此记录一下。书中代码段摘录如下:
frommathimportsqrt defsim_distance(prefs,person1,person2): #得到shared_items的列表 si={} foriteminprefs[person1]: ifiteminprefs[person2]: si[item]=1 #如果两者没有共同之处,则返回0 iflen(si)==0:return0 #计算所有差值的平方和 sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2) foriteminprefs[person1]ifiteminprefs[person2]]) return1/(1+sqrt(sum_of_squares))
自己不明白的代码块就是在计算所有差值的平方和这里,按照一般语言逻辑,应该是for语句和pow语句位置对调一下啊,很是困惑!后来查阅了一下sum函数的用法才豁然开朗,再次感叹Python之神(bian)奇(tai)语法。
sum函数的参数是这样的:sum(iterable[,start]),其中iterable为可迭代对象,可以是list、tuple或者dictionary等。
sum函数最后的值=可迭代对象里面的数相加的值+start的值,其中start可以不写,默认为0。讲到这里,那么我们怎么去理解上面计算所有差值的平方和这段代码呢?其实很简单,看看下面这段代码,然后再回去看上面那段代码就会柳暗花明了!
frommathimportsqrt a=range(1,11) b=range(1,10) c=sum([itemforiteminaifiteminb]) printc
可以自己输入这段简单的代码运行试试,最终的结果是:45
补充一点:"itemforiteminaifiteminb"这种表达式叫作列表推导式,是在一组字符串或者一组对象上执行一条相同操作的简洁写法!
以上这篇基于Python中求和函数sum的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。