制作带范围的垃圾箱

时间:2017-02-28 19:34:15

标签: python list range

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

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

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

1 个答案:

答案 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]