如何创建一个从给定的列表计算所有反向值的总和的函数?
lst = [1,2,3]
def sum_inv(lst):
# what to put here?
sum_inv([1,2,3]) = 1/1 + 1/2 + 1/3
你有什么建议吗?
答案 0 :(得分:6)
这应该做你正在寻找的事情:
def sum_inv(lst):
return sum(1/x for x in lst)
正如ozgur在评论中指出的那样,如果lst包含任何0,则会抛出异常。如果你想忽略任何0并避免异常,那么你可以在理解中添加一个检查以忽略这些值。
def sum_inv(lst):
return sum(1/x for x in lst if x != 0)
答案 1 :(得分:1)
对于Python2,你应该使用1.0 / x
,否则你会被截断的divison
def sum_inv(lst):
return sum(1.0 / x for x in lst if x != 0)