2016-02-03 64 views
1

比方說,我有一個長度約爲40的列表「A」,由0到5的整數和一個列表「Score」組成。我想計算Score [A [i]]的總和。最有效的方法來計算這個總和python

當然,我可以這樣做:

sum = 0 
for x in A do: 
    sum += Score[x] 

但有一個更快的方法?我知道numpy可以做列表的乘法,但這需要某種索引。

+0

什麼'和吮吸(分數[A [1])' – SIslam

+4

你可以試試'總= SUM (A中x的Score [x])'sum()'是一個內建函數。 – zondo

+3

(因爲你標記了這個[numpy])如果'Score'是一個NumPy數組,你可以使用Score [A] .sum()'。如果您不需要其他NumPy函數,則不需要使用本地Python方法。 –

回答

2

我看到那些解決方案:

print sum(Score[x] for x in A) 
print sum(map(lambda x: Score[x], A)) 
+0

'Score'和'A'都是列表,所以我認爲你的代碼在寫入時不起作用。 –

+0

對不起,我誤解了,我編輯我的文章 – cromod

+2

不用擔心 - 現在工作,雖然它可能更快地使用'sum'中的生成器表達式,即'sum(Score [x] for x in A)' –

1

Python函數「sum」非常高效。它避免了內存開銷(我相信它是用C編寫的),並且應該快一點。

它看起來像這樣

intSum = sum(array) 
相關問題