Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对列表中的相似数字求和_Python_Sum - Fatal编程技术网

Python 如何对列表中的相似数字求和

Python 如何对列表中的相似数字求和,python,sum,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')) slop

因此,我只是在玩游戏,试图对类似的术语求和,只要它是一个特定的用户输入术语。例如,在一个列表中,
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))

我想这会管用的,但我觉得有一种更优雅的方式。有什么建议吗?

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

>>> L = [1,2,2,3,4] 
>>> num=2
>>> sum(i for i in L if i==num)
4
或者,作为一种效率较低的方式,您可以使用
过滤器
功能:

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

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

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

>>> L = [1,2,2,3,4] 
>>> num=2
>>> sum(i for i in L if i==num)
4
x= [1,2,2,3,4]
y=2
print sum([k for k in x if k==y])
或者,作为一种效率较低的方式,您可以使用
过滤器
功能:

>>> sum(filter(lambda x :x==2,L))
4
但请注意,如果您的病情更复杂,这可能会有所帮助

x= [1,2,2,3,4]
y=2
print sum([k for k in x if k==y])
简单的列表理解


简单的列表理解。

我喜欢最好的方法,这正是我想要的,谢谢!我喜欢最好的方式,这正是我想要的,谢谢!