2016-08-17 75 views
0

有一个函数返回列表x中大于整数y的整数之和。如果没有数大于y的函数返回0是否可以通过以下函数进行列表理解?

def sum_greater(x, y): 
    result = 0 
    for i in range(len(x)): 
     if x[i] > y: 
      result = result + x[i] 
    return result 

我的问题更大:是否有可能(如果它比如何),使这个函数列表理解?

+0

我didn't考虑一下。如果所有数字都小于y,它必须返回0。但是当我在shell中运行模块(sum_greater([1,2,3,4,5,6],4))时,它返回11,所以我认为它正常工作 –

+0

返回0,而不是11。我们错了代码? – zondo

+0

你是对的,我复制了错误的代码 –

回答

3

您可以使用sum()功能与发电机的表达:

sum(i for i in x if i > y) 
3

由于0是没有的总和,这并不需要任何特殊处理的自然结果。您可以发送generator expression到内置sum

def sum_greater(x, y): 
    return sum(i for i in x if i>y) 
相关问题