我正在研究一個小練習項目,我無法找到答案。我想擲4d6,降到最低,並將剩下的三個加在一起。我發現heapq.nlargest可以爲我找到最高的N個數字,但我無法弄清楚如何將這個數字的輸出合併爲一個數字。如何打印由heapq.nlargest輸出的X數字的總和?
到目前爲止,我未完成的代碼如下所示:
import random
import heapq
print "How many stats would you like to roll?"
dice = input
for i in range(dice()):
roll1 = random.randint(1, 6)
roll2 = random.randint(1, 6)
roll3 = random.randint(1, 6)
roll4 = random.randint(1, 6)
allrolls = (roll1, roll2, roll3, roll4)
high3 = heapq.nlargest(3, allrolls)
'sum'函數。你怎麼知道'heapq.nlargest'而不是'sum'函數?它需要任何迭代並對它進行求和,'heapq.nlargest'返回一個可迭代的(精確的''list')。 – ShadowRanger
請注意,在這種情況下'heapq.nlargest'只會讓你很少(當你需要從一個更大的列表中取少數值時,這個功能非常有用)。 'sum(allrolls) - min(allrolls)'或'sum(sorted(allrolls)[ - 3:])'在理論和實踐上都可能更有效率。 – ShadowRanger
我在這裏找到了一個關於如何打印x列表中最大數字的問題的答案,並且它運行良好。感謝更高效的版本! – qgloaf