我有一个非负整数数组,其中最小的是min_val
,其中最大的是max_val
。我想使用range
来创建具有给定step
的bin边界列表,以使该范围中的第一个值等于min_val
,并且该范围中的最后一个值大于max_val
。我的尝试是:
bins = list(range(min_val, max_val + step + 1, step))
我似乎无法理解的是如何确定range()
的第二个参数的最小值,它可以保证范围中的最后一个值大于max_val
。我的尝试是否正确?
答案 0 :(得分:0)
您的代码是正确的。
暂时忘记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]