比方說,我有一個長度約爲40的列表「A」,由0到5的整數和一個列表「Score」組成。我想計算Score [A [i]]的總和。最有效的方法來計算這個總和python
當然,我可以這樣做:
sum = 0
for x in A do:
sum += Score[x]
但有一個更快的方法?我知道numpy可以做列表的乘法,但這需要某種索引。
比方說,我有一個長度約爲40的列表「A」,由0到5的整數和一個列表「Score」組成。我想計算Score [A [i]]的總和。最有效的方法來計算這個總和python
當然,我可以這樣做:
sum = 0
for x in A do:
sum += Score[x]
但有一個更快的方法?我知道numpy可以做列表的乘法,但這需要某種索引。
我看到那些解決方案:
print sum(Score[x] for x in A)
print sum(map(lambda x: Score[x], A))
'Score'和'A'都是列表,所以我認爲你的代碼在寫入時不起作用。 –
對不起,我誤解了,我編輯我的文章 – cromod
不用擔心 - 現在工作,雖然它可能更快地使用'sum'中的生成器表達式,即'sum(Score [x] for x in A)' –
Python函數「sum」非常高效。它避免了內存開銷(我相信它是用C編寫的),並且應該快一點。
它看起來像這樣
intSum = sum(array)
什麼'和吮吸(分數[A [1])' – SIslam
你可以試試'總= SUM (A中x的Score [x])'sum()'是一個內建函數。 – zondo
(因爲你標記了這個[numpy])如果'Score'是一個NumPy數組,你可以使用Score [A] .sum()'。如果您不需要其他NumPy函數,則不需要使用本地Python方法。 –