如何在列表python中对数字求和

时间:2015-03-11 05:48:48

标签: python sum

因此,我正在玩并试图仅在它是特定的用户输入术语时对类似术语求和。例如在列表L = [1,2,2,3,4]中然后我说我希望所有项的总和为2,所以2显示两次,我知道2+2=4所以它将返回4.

到目前为止,我觉得这比我要做的容易得多:

def main():
    L = eval(input("Please enter the list")
    num = eval(input('Enter the number that has like terms'))
    sloppyway = []
    for nums in L:
        if nums == num:
            sloppyway.append(nums)
    return (sum(sloppyway))

我认为这样可行,但我觉得有一种更时尚,更优雅的方式。有什么建议吗?

2 个答案:

答案 0 :(得分:6)

您可以将sum函数与生成器表达式一起使用,如下所示:

>>> L = [1,2,2,3,4] 
>>> num=2
>>> sum(i for i in L if i==num)
4

或者作为一种效率较低的方式,您可以使用filter函数:

>>> sum(filter(lambda x :x==2,L))
4

但请注意,如果您的情况更复杂,这可能会有所帮助!

答案 1 :(得分:1)

x= [1,2,2,3,4]
y=2
print sum([k for k in x if k==y])

只需使用列表理解。