【问题标题】:Make bins with range制作带范围的垃圾箱
【发布时间】:2017-02-28 19:34:15
【问题描述】:

我有一个非负整数数组,其中最小的是min_val,最大的是max_val。我想使用range 来制作具有给定step 的bin 边界列表,使得范围中的第一个值等于min_val,并且范围中的最后一个值大于max_val .我的尝试是:

bins = list(range(min_val, max_val + step + 1, step))

我似乎无法理解的是如何确定range() 的第二个参数的最小值,它可以保证范围内的最后一个值大于max_val。我的尝试正确吗?

【问题讨论】:

  • 如果需要GREATER而不是大于等于,则将1改为2,否则就可以了
  • “大于”(>) 或“大于或等于”(>=) 比max_val?
  • @Jerfov2 需要大于 (>)。为什么是 2?
  • @Elmex80s 大于 (>)。
  • 不完全确定@Jerfov2 声称的内容,但range(6, 11 + 3 + 2, 3) 给出了[6, 9, 12, 15],这是不受欢迎的,因为您希望12 成为列表中的最大值。问题中的代码是正确的。

标签: python list range


【解决方案1】:

您的代码是正确的。

让我们暂时忘记range 函数。使用max_val + step 的上限(包括上限),您保证所采取的最后一步大于 (>) max_val,因为如果它将在max_val 处停止,那么您可以执行另一个大小为step 的步骤,因为max_val + step 是上限。

现在范围函数在 (max_val + step,你必须给它加1,这样你就有max_val + step + 1

请注意,这是不正确的代码:

>>> range(6, 11 + 3 + 2, 3) 
[6, 9, 12, 15] 

因为您希望 12 成为列表中的最大值。

这也是一个错误的结果

>>> range(5, 11 + 3 + 0, 3)
[5, 8, 11]

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2016-05-22
    • 2019-02-22
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多