【问题标题】:How do I print the sum of X numbers output by heapq.nlargest?如何打印 heapq.nlargest 输出的 X 个数的总和?
【发布时间】:2016-12-14 08:49:38
【问题描述】:

我正在做一个小型练习项目,但我找不到答案。我想掷 4d6,把最低的,然后把剩下的三个加在一起。我发现 heapq.nlargest 可以为我找到最高的 N 个数字,但我不知道如何将其输出求和为一个数字。

到目前为止,我未完成的代码如下所示:

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)。
  • 请注意,在这种情况下,heapq.nlargest 对您的帮助很少(当您需要较大列表中的少数值时,它最有用)。 sum(allrolls) - min(allrolls)sum(sorted(allrolls)[-3:]) 在理论上和实践上都可能更有效。
  • 我在这里找到了一个答案,关于如何打印一个小列表的 x 最大数字,它运作良好。感谢您提供更高效的版本!

标签: python


【解决方案1】:

The sum function:

high3sum = sum(high3)

【讨论】:

    【解决方案2】:

    将此行添加到循环的末尾:

        print sum(high3)
    

    Python sum 内置函数将对可迭代对象的值求和。 heapq.nlargest 方法返回一个可迭代对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多