汇总列表中的元素


76

这是我的代码,我需要对列表中未定义数量的元素求和。这该怎么做?

l = raw_input()
l = l.split(' ')
l.pop(0)

我的输入:3 5 4 9 输入后,我通过删除第一个元素l.pop(0)。在.split(' ')列表之后['5', '4', '9'],我需要对列表中的所有元素求和。

在这种情况下,总和为18。请注意,未定义元素数。


@JakobBowyer我需要删除第一条记录
treng 2012年

2
@AshwiniChaudhary不是很明显吗?是一个字符串...他使用了raw_input()
KurzedMetal 2012年

这回答了你的问题了吗?对Python中的数字列表求和
AMC

Answers:


171

您可以使用内置的sum()来对列表中的数字求和

sum(your_list)

它将汇总所有数量的项目。例:

my_list = range(10, 17)
my_list
[10, 11, 12, 13, 14, 15, 16]

sum(my_list)
91

对于您的具体情况

对于您的数据,首先将数字转换为数字int,然后将数字求和:

data = ['5', '4', '9']

sum(int(i) for i in data)
18

这将适用于列表中未定义数量的元素(只要它们是“数字”即可)

感谢@senderle的注释重新转换,以防数据为字符串格式。


感谢您提供的解决方案,包括转换为整数,对我来说,它仅在将i放在数据的int(i)周围放在方括号[]时才有效。这正常吗?
Aki

是的,很正常。莱文忘记了括号。
尼古拉斯·哥德尔

8
>>> l = raw_input()
1 2 3 4 5 6 7 8 9 10
>>> l = l.split()
>>> l.pop(0)
'1'
>>> sum(map(int, l)) #or simply sum(int(x) for x in l) , you've to convert the elements to integer first, before applying sum()
54



2

您可以用来sum对列表中的元素求和,但是,如果列表来自raw_input,则可能需要先将项目转换为intfloat

l = raw_input().split(' ')
sum(map(int, l))

1

您可以使用mapfunction和pythons内置sum()函数。它简化了解决方案。并降低了复杂性。
a=map(int,raw_input().split())
sum(a)
做完了!


0
def sumoflist(l):    
    total = 0    
    for i in l:
        total +=i
    return total
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.