2012-07-05 13 views
39

ここに私のコードがあります。リスト内の要素の数が不定になります。これを行う方法?リスト内の要素を集計する

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

マイ入力:3 5 4 9 入力した後、私はl.pop(0)を介して第一の要素を削除します。 .split(' ')の後に私のリストは['5', '4', '9']であり、このリストのすべての要素を合計する必要があります。

この場合、合計は18です。要素の数は定義されていません。

+2

なぜ 'l.pop(0)'ですか? –

+0

あなたの入力は何ですか? –

+0

@JakobBowyer最初のエントリを削除する必要があります – treng

答えて

103

あなたは、単に組み込みの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のコメント再変換ありがとう。

+0

整数への変換を含むソリューションをありがとう、私の場合は、データの中でint(i)のまわりに角括弧[]を置いた場合のみ動作します。これは正常ですか? – Aki

4

Python iterableは、[sum(range(10)[1:])]のように合計できます。これは、最初の要素を除くリストからすべての要素を合計します。

>>> atuple = (1,2,3,4,5) 
>>> sum(atuple) 
15 
>>> alist = [1,2,3,4,5] 
>>> sum(alist) 
15 
2

あなたのリストがraw_inputから来ている場合しかし、あなたはおそらくintまたはfloat最初にアイテムを変換するには、リストの要素を合計するsumを使用することができます。

l = raw_input().split(' ') 
sum(map(int, l)) 
6
>>> 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 
1

map機能とpythons組み込みsum()機能を使用することができます。これは、ソリューションを簡素化します。複雑さを軽減します。
a=map(int,raw_input().split())
sum(a)
完了!

関連する問題