今天在《集体编程智慧》这本书的时候,看到一段Python
代码,经过研究之后大概弄懂了这段代码的意思,保存一下。
from math import sqrt
def sim_distance(perfs,person1,person2):
si={}
for item in perfs[person1]:
if item in perfs[person2]:
si[item]=1
if len(si)==0:return 0
sim_of_squares = sum([pow(perfs[person1][item]-perfs[person2][item],2)
for item in perfs[person1] if item in perfs[person2]])
return 1/(1+sqrt(sum_of_squares))
sum
函数的用法:sum(iterable[, start])
,其中iterable为可迭代对象,可以是list
、tuple
或者dictionary
等。
sum
函数最后的值 = 可迭代对象里面的数相加的值 + start
的值,其中start
可以不写,默认为0
。
这里的"for item in perfs[person1] if item in perfs[person2]]"
叫作列表推导式。